火星大王 @ 2016-10-04 19:45:15
#include<iostream>
#include<cstdio>
using namespace std;
int r=0,c=0,data[110][110]={0},q[110][110]={0};
int step=0,t=0,ans=0;
const int fangwei[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
int dfs(int x,int y)
{
if(q[x][y])return q[x][y];step=0;//剪枝
for(int i=0;i<4;i++)//4方向搜索
{
int x1,y1;
x1=x+fangwei[i][0];
y1=y+fangwei[i][1];
if(data[x1][y1]<data[x][y]&&x1>=0&&x1<c&&y1>=0&&y1<r)
{
t=dfs(x1,y1);
if(t>step)step=t;
}
}
q[x][y]=step+1;
return q[x][y];
}
int main()
{
freopen("B.in","r",stdin);
scanf("%d%d",&r,&c);
for(int a=0;a<r;a++)
{
for(int b=0;b<c;b++)
{
scanf("%d",&data[a][b]);
}
}
for(int a=0;a<=r;a++)
{
for(int b=0;b<=c;b++)
{
int aaa=dfs(a,b);
if(aaa>ans)ans=aaa;
}
}
cout<<ans<<endl;
}
by du33169 @ 2017-02-09 19:01:49
if(data[x1][y1]<data[x][y]&&x1>=0&&x1<c&&y1>=0&&y1<r)
这里x1应该小于r,y1小于c吧
freopen记得去掉
by SofanHe @ 2017-05-25 23:02:41
你的XY反了。。。。。
by n0000000000o @ 2018-05-30 12:01:50
,,,我也写错了,,
谢谢,有帮助