两遍暴力dfs,为什么这种做法是错误的
#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
using namespace std;
const int N=30,fx[2]={0,1},fy[2]={1,0};
int ans=-1,n,x,y,z,a[N][N];
void dfs(int x,int y,int sum,bool flag){
if(x==n&&y==n){
if(flag==0)dfs(1,1,sum,1);
else{
ans=max(ans,sum);
return;
}
}
for(int i=0;i<2;i++){
int nx=x+fx[i],ny=y+fy[i];
if(nx>n||ny>n)continue;
int temp=a[nx][ny];
a[nx][ny]=0;
dfs(nx,ny,sum+temp,flag);
a[nx][ny]=temp;
}
}
int main(){
cin>>n;
while(cin>>x>>y>>z){
if(x==0&&y==0&&z==0)break;
a[x][y]=z;
}
dfs(1,1,0,0);
cout<<ans;
return 0;
}