| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
DFS居然也能水过,这数据。。。#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int N,M,ans,maps[105][105];
int step[105][105];
void dfs(int x,int y,int coun)
{
if(ans<coun)
ans = coun;
if(x<=0||x>N||y<=0||y>M)
return ;
if(step[x][y]>=coun)
return ;
else step[x][y] = coun;
if(x-1>0&&maps[x-1][y]<maps[x][y])
{
coun ++;
dfs(x-1,y,coun);
coun--;
}
if(x+1<=N&&maps[x+1][y]<maps[x][y])
{
coun++;
dfs(x+1,y,coun);
coun--;
}
if(y-1>0&&maps[x][y-1]<maps[x][y])
{
coun++;
dfs(x,y-1,coun);
coun--;
}
if(y+1<=M&&maps[x][y+1]<maps[x][y])
{
coun++;
dfs(x,y+1,coun);
coun--;
}
}
int main()
{
int maxs,startx,starty;
while(~scanf("%d%d",&N,&M))
{
maxs = 0;ans = 0;
memset(step,0,sizeof(step));
for(int i =1;i<=N;i++)
for(int j =1;j<=M;j++)
{
scanf("%d",&maps[i][j]);
}
for(int i =1;i<=N;i++)
{
maxs = 0;
for(int j =1;j<=M;j++)
{
if(maxs<maps[i][j])
{
startx = i;
starty = j;
maxs= maps[i][j];
}
}
dfs(startx,starty,1);
}
cout<<ans<<endl;
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator