| ||||||||||
| 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 | |||||||||
为什么 深搜就错了?// pk1088.cpp : Defines the entry point for the console application.
//
#include <stdio.h>
#define MAXN 110
#define MAXSHORT 30000
const int dr[4]={0,1,0,-1};
const int dc[4]={-1,0,1,0};
short map[MAXN][MAXN];
char best[MAXN][MAXN];
void dfs(int r,int c){
int i,rr,cc;
best[r][c]=1;
for(i=0;i<4;i++){
rr=r+dr[i];
cc=c+dc[i];
if(map[rr][cc]>=map[r][c])
continue;
if(best[rr][cc]==1)
dfs(rr,cc);
if(best[rr][cc]+1>best[r][c])
best[r][c]=best[rr][cc]+1;
}
}
int main(int argc, char* argv[])
{
int n,m,i,j,ans;
while(scanf("%d%d",&n,&m)!=EOF){
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
scanf("%d",&map[i][j]);
for(i=0;i<=n+1;i++)
map[i][0]=map[i][m+1]=MAXSHORT;
for(i=1;i<=m;i++)
map[0][i]=map[n+1][i]=MAXSHORT;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
best[i][j]=1;
ans=0;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(best[i][j]==1){
dfs(i,j);
if(best[i][j]>ans)
ans=best[i][j];
}
// i++;
printf("%d\n",ans);
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator