求助,wa了两个点,有注释

P1434 [SHOI2002] 滑雪

ysj1173886760 @ 2018-04-17 13:22:31

include<iostream>

using namespace std; int dx[4]={1,0,0,-1},dy[4]={0,1,-1,0}; int map1[110][110],dp[110][110]; //dp[i][j]为第i,j个格子开始滑,所能滑的最大长度 int r,c,ans; int dfs(int x,int y) { if(dp[x][y])return dp[x][y]; //如果搜过,直接返回 bool ok=false; for(int i=0;i<4;i++) { int nx=x+dx[i]; int ny=y+dy[i]; if(map1[x][y]>map1[nx][ny]&&nx>=1&&ny>=1&&nx<=r&&ny<=c) { ok=true; dp[x][y]=max(dp[x][y],dfs(nx,ny)+1); } } if(!ok)dp[x][y]=1; //如果无法再拓展,则长度为1; return dp[x][y]; } int main() { cin>>r>>c; for(int i=1;i<=r;i++) for(int j=1;j<=r;j++) cin>>map1[i][j]; for(int i=1;i<=r;i++) //每一个点都搜一遍 for(int j=1;j<=r;j++) ans=max(ans,dfs(i,j));
cout<<ans; return 0; }


by ysj1173886760 @ 2018-04-17 13:35:45

明白了,不用回了,感谢


|