c++生成代码 四个整数m,n,x,y。在一个m行n列的二维数组中,从x行y列开始,第i行的2*j-1和2*j为第i行j列的任务指引,下一步要到相对应的单元格中找下一个任务指引,如果第i行j列的任务指引都为0,结束。输出到过哪几个单元格
时间: 2024-02-15 08:05:08 浏览: 60
好的,让我来帮你解决这个问题。你需要用C++生成代码,来实现在一个m行n列的二维数组中,从x行y列开始,按照任务指引的要求,找到所有的任务指引,并输出到过哪几个单元格。
首先,我们需要定义一个二维数组,并且初始化所有元素为0。代码如下:
```c++
int a[1010][1010];
memset(a, 0, sizeof(a));
```
接下来,我们需要输入m、n、x、y这四个整数,以及二维数组a的元素值。代码如下:
```c++
int m, n, x, y;
cin >> m >> n >> x >> y;
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= n; j++) {
cin >> a[i][j];
}
}
```
然后,我们需要按照任务指引的要求,依次找到下一个任务指引,并输出到过哪几个单元格。代码如下:
```c++
int i = x, j = y;
while (a[i][j] != 0) {
cout << i << " " << j << endl;
int ni = a[i][j] / 2, nj = a[i][j] % 2 == 1 ? j - 1 : j + 1;
i = ni, j = nj;
}
cout << i << " " << j << endl;
```
最后,我们需要输出到过哪几个单元格。代码如下:
```c++
cout << endl;
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= n; j++) {
if (a[i][j] != 0) {
cout << i << " " << j << endl;
}
}
}
```
这样,我们就完成了这个问题的解决。完整代码如下:
阅读全文