Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

谁给看看哪儿错了,WA了10几次了~ Problem 1088

Posted by doner at 2008-10-10 20:22:51
#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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator