蒟蒻求dalao解答

P1434 [SHOI2002] 滑雪

。。。然后呢
by encore @ 2019-02-16 08:56:55


区别就是maxx定义在全局变量和只是定义在dfs里的变量; 然而为什么定义在全局变量里的代码所得的结果是错的呢? 求助qwq 错的代码: #include<cstdio> #include<cmath> #include<iostream> #include<algorithm> using namespace std; int mp[15520][5520],f[5520][5520],r,c,ans,maxx; int dx[]={0,0,1,-1}; int dy[]={1,-1,0,0}; int dfs(int x,int y) { if(f[x][y]!=1) return f[x][y]; maxx=0; for(int i=0;i<=3;i++) if(x>0&&y>0&&x<=r&&y<=c&&mp[x][y]>mp[x+dx[i]][y+dy[i]]) maxx=max(maxx,dfs(x+dx[i],y+dy[i])+1); f[x][y]=max(f[x][y],maxx); return f[x][y]; } int main() { scanf("%d%d",&r,&c); for(int i=1;i<=r;i++) for(int j=1;j<=c;j++) { scanf("%d",&mp[i][j]); f[i][j]=1; } for(int i=1;i<=r;i++) for(int j=1;j<=c;j++) ans=max(ans,dfs(i,j)); printf("%d",ans); return 0; }
by 6954717a @ 2019-02-16 08:57:21


@[encore](/space/show?uid=113385) 就是那个maxx全局变量和定义在dfs里的区别qwq
by 6954717a @ 2019-02-16 08:58:37


求助qwq
by 6954717a @ 2019-02-16 09:00:58


@[6954717a](/space/show?uid=144139) 定义成全局变量的话你递归到下一层的时候会把上一次的maxx给覆盖掉啊
by encore @ 2019-02-16 09:01:48


@[encore](/space/show?uid=113385) THANKS!dalao 帮助很大!
by 6954717a @ 2019-02-16 09:06:46


|