| ||||||||||
| 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 | |||||||||
谁给看看哪儿错了,WA了10几次了~ Problem 1088#include<stdio.h>
int m[101][101];
int input[101][101];
int row,col;
int minn(int i,int j)
{
int k,p,min;
int diff[4];
min=10002;
p=4;
for(k=0;k<4;k++)diff[k]=0;
if(i-1<0)
diff[0]=0;
else
diff[0]=input[i][j]-input[i-1][j];
if(j-1<0)
diff[1]=0;
else
diff[1]=input[i][j]-input[i][j-1];
if(i+1>=row)
diff[2]=0;
else
diff[2]=input[i][j]-input[i+1][j];
if(j+1>=col)
diff[3]=0;
else
diff[3]=input[i][j]-input[i][j+1];
for(k=0;k<4;k++)
{
if(min>diff[k]&&diff[k]>0){min=diff[k];p=k;}
}
return p;
}
int computePath(int i,int j)
{
int p;
if(i<0||j<0||i>=row||j>=col){return 0;}
if(m[i][j]!=10002)return m[i][j];
else
{
p=minn(i,j);
if(p==0){m[i][j]=computePath(i-1,j)+1;}
else if(p==1){m[i][j]=computePath(i,j-1)+1;}
else if(p==2){m[i][j]=computePath(i+1,j)+1;}
else if(p==3){m[i][j]=computePath(i,j+1)+1;}
else{m[i][j]=0;}
}
return m[i][j];
}
int main()
{
int i,j,max,t;
max=0;
scanf("%d%d",&row,&col);
for(i=0;i<row;i++)
for(j=0;j<col;j++)
{
scanf("%d",&input[i][j]);
m[i][j]=10002;
}
for(i=0;i<row;i++)
for(j=0;j<col;j++)
{
t=computePath(i,j);
if(t>max)
max=t;
}
printf("%d\n",max+1);
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator