知识点求解答,我如果不在dfs定义 int M,而在外边定义一个全局变量int M,然后在每个dfs函数里都说M=0,就过不了,为什么 代码:
#include<iostream>
#include<algorithm>
using namespace std;
int N;
int M;
int f[11][11][11][11],s[15][15];
int dfs(int x1,int y1,int x2,int y2)
{
if(f[x1][y1][x2][y2]!=-1) return f[x1][y1][x2][y2];
if (x1==N&&y1==N&&x2==N&&y2==N) return 0;
int M=0;//如果不加int 定义,就过不了,最终返回结果0
//都向下走
if(x1<N&&x2<N) M=max(M,dfs(x1+1,y1,x2+1,y2)+s[x1+1][y1]+s[x2+1][y2]-s[x1+1][y1]*(x1+1==x2+1&&y1==y2));
//A向下走,B向右走
if(x1<N&&y2<N) M=max(M,dfs(x1+1,y1,x2,y2+1)+s[x1+1][y1]+s[x2][y2+1]-s[x1+1][y1]*(x1+1==x2&&y1==y2+1));
//A向右走,b向下走
if(y1<N&&x2<N) M=max(M,dfs(x1,y1+1,x2+1,y2)+s[x1][y1+1]+s[x2+1][y2]-s[x1][y1+1]*(x1==x2+1&&y1+1==y2));
//A向右走,b向右走
if(y1<N&&y2<N) M=max(M,dfs(x1,y1+1,x2,y2+1)+s[x1][y1+1]+s[x2][y2+1]-s[x1][y1+1]*(x1==x2&&y1+1==y2+1));
f[x1][y1][x2][y2]=M;
//cout<<f[x1][y1][x2][y2]<<endl;
return M;
}
int main()
{
cin>>N;
for(int i=0;i<=N;i++)
{
for(int j=0;j<=N;j++)
{
for(int k=0;k<=N;k++)
{
for(int m=0;m<=N;m++)
{
f[i][j][k][m]=-1;
}
}
}
}
while(1)
{
int a,b,c;
cin>>a>>b>>c;
if(a==0&&b==0&&c==0)
break;
s[a][b]=c;
}
cout<<dfs(1,1,1,1)+s[1][1];
return 0;
}