代码
#include<bits/stdc++.h>
using namespace std;
const int dx[4]={0,1,0,-1};
const int dy[4]={1,0,-1,0};
int a[10][10],n,ans,maxx;//,maxx;
void dfs(int x,int y,int now,int flag)
{
// int maxx=0;
if(x<1||y<1||x>n||y>n) return;
if(x==n&&y==n)
{
flag=1,now-=a[n][n];
if(now>maxx) maxx=max(maxx,now);
else return;
}
if(x==1&&y==1&&flag==1) ans=max(ans,now);
if(flag==0)
for(int i=0;i<2;i++)
{
int xx=x+dx[i],yy=y+dy[i],aa=a[xx][yy];
a[xx][yy]=0,dfs(xx,yy,now+aa,flag),a[xx][yy]=aa;
}
else
for(int i=2;i<4;i++)
{
int xx=x+dx[i],yy=y+dy[i],aa=a[xx][yy];
a[xx][yy]=0,dfs(xx,yy,now+aa,flag),a[xx][yy]=aa;
}
}
int main()
{
cin>>n;
int x,y,z;
for(;;)
{
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;
}
第八行的变量maxx定义在函数内则超时,定义到函数外就过了,蒟蒻不理解这是为什么
20和26行也有变量的定义,但并不影响程序结果,感觉好离谱,可能是我太蒻了
望诸位大佬不吝赐教,万分感谢