cn_lemon @ 2017-07-13 11:30:59
/* 为什么会90分????
第九个点的第二个数字为0(标准输出10),我是8。。。。
鄙人实在看不出来,求大佬(帅哥)解答
*/
#include<iostream>
#include<cstdio>
using namespace std;
const int MAXN=100+10;
int a[MAXN][MAXN],w[MAXN][MAXN],ww[MAXN][MAXN];
int r,c,maxx,sum;
int dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};
void dfs(int x,int y,int k)
{
int i,flag=0;
if(ww[x][y])
{
//printf("*%d*\n",sum);
sum=max(sum,k+ww[x][y]-1);
//printf("*%d %d %d*\n",k,sum,ww[x][y]);
return;
}
for(i=0;i<4;i++)
{
int x1=x+dx[i],y1=y+dy[i];
if(a[x1][y1]>=a[x][y]||x1<=0||y1<=0||x1>r||y1>c)continue;
flag=1;
//printf("%d %d %d %d %d\n",x,y,sum,a[x][y],k);
dfs(x1,y1,k+1);
//printf("%d %d %d %d %d\n",x,y,sum,a[x][y],k);
w[x][y]=max(w[x][y],sum-k+1);
}
if(flag==0)
{
sum=max(k,sum);
w[x][y]=1;
}
}
int main()
{
scanf("%d%d",&r,&c);
for(int i=1;i<=r;i++)
for(int j=1;j<=c;j++)
scanf("%d",&a[i][j]);
for(int i=1;i<=r;i++)
for(int j=1;j<=c;j++)
if(!ww[i][j])
{
sum=0;
dfs(i,j,1);
maxx=max(sum,maxx);
//printf("\n");
for(int ii=1;ii<=r;ii++)
for(int jj=1;jj<=c;jj++)
if(ww[ii][jj]==0)
ww[ii][jj]=w[ii][jj];
}
printf("%d",maxx);
return 0;
}
by 昆仑龙鹫 @ 2017-07-13 11:31:37
by 你家root跑了 @ 2017-07-13 11:32:40
我也看不懂(ノ=Д=)ノ┻━┻P党掀桌
by WilliamPen @ 2017-07-13 12:20:04
膜
by d3NtMDAw @ 2017-07-13 12:38:37
先%%%(日常%蛤1/1)
其次数据呢
by 老K @ 2017-07-13 12:51:57
@柠檬没我萌呐 你自己写错了为什么要说“洛谷惊现灵异事件”呢?这是在推锅吗?
by cn_lemon @ 2017-07-13 14:35:22
@罗恺 标题党表示这是一种艺术
by wabcy @ 2017-07-13 15:21:57
明天来震惊部上班(滑稽)
by 老K @ 2017-07-13 15:47:21
@柠檬没我萌呐 我不觉得,,我只觉得这是一种推锅。
by WilliamPen @ 2017-07-19 09:36:45
每次看到标题,就知道是你。。
by Lunch @ 2017-07-19 15:12:36
@罗恺 dddd