豊聡耳神子 @ 2018-09-26 21:10:28
这样写有什么问题吗?
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<algorithm>
using namespace std;
int dp[110][110],n,m,a[110][1],p;
int dfs(int,int);
int main()
{
int ans=0;
cin>>n>>m;
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
{
cin>>a[i][j];
dp[i][j]=1;
}
for(int i=1;i<=n;++i)
for(int j=1;j<=m;++j)
{
ans=max(ans,dfs(i,j));
}
cout<<ans;
return 0;
}
int dfs(int x,int y)
{
if(dp[x][y]) return dp[x][y];
p=0;
if(x>=1&&y>=1&&x<n&&y<=m&&a[x][y]>a[x+1][y]) p=max(p,(dfs(x+1,y)+1));
if(x>=1&&y>=1&&x<=n&&y<m&&a[x][y]>a[x][y+1]) p=max(p,(dfs(x,y+1)+1));
if(x>1&&y>=1&&x<=n&&y<=m&&a[x][y]>a[x-1][y]) p=max(p,(dfs(x-1,y)+1));
if(x>=1&&y>1&&x<=n&&y<=m&&a[x][y]>a[x][y-1]) p=max(p,(dfs(x,y-1)+1));
dp[x][y]=max(dp[x][y],p);
return dp[x][y];
}
by ___I_AK_IOI @ 2018-09-26 21:18:19
@Mireco 没有问题吗???
by ___I_AK_IOI @ 2018-09-26 21:18:35
@Mireco 这代码怎么可能是对的
by Nemlit @ 2018-09-26 21:23:48
a数组小了
by 叶小枫 @ 2018-09-26 21:25:20
感觉好迷啊,您在dfs中dp是吗……有点没见过可能是我太弱了qwq
by 豊聡耳神子 @ 2018-09-26 21:34:04
......貌似递归的边界条件写错了?
by 豊聡耳神子 @ 2018-09-26 21:34:36
那我自己改一下好了