6954717a @ 2019-02-16 08:55:06
Code1:
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std;
int mp[15520][5520],f[5520][5520],r,c,ans;
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];
int 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;
}
Code2:
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std;
int mp[15520][5520],f[5520][5520],r,c,ans;
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];
int 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 encore @ 2019-02-16 08:56:55
。。。然后呢
by 6954717a @ 2019-02-16 08:57:21
区别就是maxx定义在全局变量和只是定义在dfs里的变量; 然而为什么定义在全局变量里的代码所得的结果是错的呢? 求助qwq
错的代码:
#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:58:37
@encore 就是那个maxx全局变量和定义在dfs里的区别qwq
by 6954717a @ 2019-02-16 09:00:58
求助qwq
by encore @ 2019-02-16 09:01:48
@6954717a 定义成全局变量的话你递归到下一层的时候会把上一次的maxx给覆盖掉啊
by 6954717a @ 2019-02-16 09:06:46
@encore THANKS!dalao 帮助很大!