代码是
#include<iostream>
using namespace std;
void lookup(int* main,int row,int col,int num,int* up)
{
int i,j;
for(i=0;i<num;i++)
{
for(j=0;j<num;j++)
{
if((row==i && (col==j+1 || col==j-1)) || (col=j && (row==i+1 || row==i-1)))//neighbour condition
{
if((*(main+i*num)+j)==1)
{
if((*(up+(i*num)+j)==1))
{
*((up+num*i)+j)=1;
lookup(main,i,j,num,up);
}
}
}
}
}
}
int main()
{
// flipping array b, input array a, we have marked array b
int n,i,j,botr,botc,place;
cin>>n;
int a[n][n],b[n][n];
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
cin>>a[i][j];
b[i][j]=0;
}
}
cin>>botr>>botc;
b[botr][botc]=1;
lookup(a,botr,botc,n,b);
//seeing which are 1 in b
place=0;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(b[i][j]==1)
place++;
}
}
cout<<place;
}
我得到的错误是
cannot convert 'int (*)[(((sizetype)(((ssizetype)n) + -1)) + 1)]' to 'int*' for argument '1' to 'void lookup(int*, int, int, int, int*)'|
所以我得到一个索引从 0,0 开始的矩阵。矩阵的值为 0 和 1。现在,当我得到任何特定位置(该位置的值为 1)时,我必须找到我可以去的所有可能的不同点并且值为 1,因为我只能移动在相邻的方式和方式不包含 0。
谢谢。
最佳答案
您的 a
不是整数数组,而是整数数组的数组。因此,它不会转换为指向整数的指针。
根据我对你的代码的理解,你可以使用&a[0]
,因为a[0]
是一个整数数组.
关于c++ - 无法在 C++ 中传递二维数组,这会导致错误无法将 int(*) 转换为 int*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58358350/