我正在运行我的代码,但收到此错误,并且我不知道如何处理。
我的代码:
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
#define LIMIT 5
int m;
void dfs(int i,int j,int k,int kk,int mat[][1000],bool vis[101][101],int n,int m) {
if(i<0 || i>n-1 || j<0 || j>m-1)
return;
if(mat[i][j]!=kk)
return;
if(vis[i][j])
return;
mat[i][j] = k;
dfs(i,j+1,k,kk,mat,vis,n,m);
dfs(i,j-1,k,kk,mat,vis,n,m);
dfs(i+1,j,k,kk,mat,vis,n,m);
dfs(i+1,j+1,k,kk,mat,vis,n,m);
dfs(i+1,j-1,k,kk,mat,vis,n,m);
dfs(i-1,j,k,kk,mat,vis,n,m);
dfs(i-1,j-1,k,kk,mat,vis,n,m);
dfs(i-1,j+1,k,kk,mat,vis,n,m);
}
int main() {
int t;
cin>>t;
while(t--) {
int n,m;
bool vis[101][101];
cin>>n>>m;
int mat[101][101];
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
cin>>mat[i][j];
int x,y,k;
cin>>x>>y>>k;
int kk = mat[x][y];
dfs(x,y,k,mat,vis,n,m);
}
return 0;
}
错误:
cpp:41:13: error: invalid conversion from ‘int (*)[101]’ to ‘int’ [-fpermissive]
41 | dfs(x,y,k,mat,vis,n,m);
| ^~~
| |
| int (*)[101]
谢谢。
答案 0 :(得分:2)
函数调用中有一个错字,它缺少一个参数,在第5个参数(一个2D数组)之前需要4个int
参数,我猜您忘了包含第4个参数{{1} }。那就是导致编译错误的原因。
修复无法解决您的问题,因为您无法将维度为kk
的数组传递给接收维度为(*)[101]
的参数的函数,它们必须匹配,这被视为不兼容类型。
将(*)[1000]
声明为:
mat
或将函数声明更改为:
int mat[1000][1000];
答案 1 :(得分:0)
dfs函数中还有另一个int参数(kk),但是您在第41行中忽略了它:dfs(x,y,k,mat,vis,n,m);
,应该在k之后写另一个整数值