rt,一份简单的dfs代码如下(P1123)
#include <bits/stdc++.h>
using namespace std;
int k[10][10],m,n,ans;
int bj[10][10];
int xx[8]={1,0,-1,1,-1,1,0,-1};
int yy[8]={1,1,1,0,0,-1,-1,-1};
void dfs(int x,int y,int cnt){
ans=max(ans,cnt);
if(y>n){
if(x==m) return;
else x++,y=1;
}else y++;
cout<<n<<"\n";
if(bj[x][y]==0){
for(int i=0;i<8;i++){
bj[xx[i]][yy[i]]--;
}
dfs(x,y,cnt+k[x][y]);
for(int i=0;i<8;i++){
bj[xx[i]][yy[i]]++;
}
}
dfs(x,y,cnt);
}
int main(){
int t;
cin>>t;
while(t--){
cin>>m>>n;
ans=0;
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
cin>>k[i][j];
bj[i][j]=0;
}
}
dfs(1,1,0);
cout<<ans<<"\n";
}
return 0;
}
但是我在整个过程中并没有改变变量 n 的值,但第 13 行每次输出的 n 是变化的,例如输入下面一组数据:
1
4 4
67 75 63 10
29 29 92 14
21 68 71 56
8 67 91 25
n 的值会递减,求大佬帮指出问题。