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

Re:嘿嘿,第一次Accepted,本人的第一道题啊!!高手们看看能不能再优化(附代码)

Posted by 20054738 at 2007-04-17 20:34:44 on Problem 1088
In Reply To:Re:嘿嘿,第一次Accepted,本人的第一道题啊!!高手们看看能不能再优化(附代码) Posted by:leevickwan at 2007-03-04 13:41:21
这是我参看别人写的
你看看吧
#include<stdio.h>
#include<iostream>

using namespace std;


int point[101][101];
int values[101][101];
bool flag[101][101];
int direction[4][2]={{0,-1},{0,1},{-1,0},{1,0}};
int R,C;


int find(int x,int y)
{
	int i,temp,max=1;
	if(x>=R || y>=C || x<0 || y<0)
		return 0;
	if(flag[x][y])
//	if(values[x][y]!=0)
		return values[x][y];
	for(i=0;i<4;i++)
	{
		if(point[x][y]>point[x+direction[i][0]][y+direction[i][1]])
		{
			temp=find(x+direction[i][0],y+direction[i][1]);
			if(max<temp+1)
				max=temp+1;
		}
	}
	flag[x][y]=true;
	values[x][y]=max;
	return max;
}
int main()
{
	int i,j;
	int max=1,temp;
	scanf("%d %d",&R,&C);
	for(i=0;i<R;i++)
	{
		for(j=0;j<C;j++)
		{
			scanf("%d",&point[i][j]);
			flag[i][j]=false;
		}
	}
	for(i=0;i<R;i++)
	{
		for(j=0;j<C;j++)
		{
			temp=find(i,j);
			if(max<temp)
				max=temp;
		}
	}
	printf("%d\n",max);
	for(i=0;i<R;i++)
	{
		for(j=0;j<C;j++)
		{
			cout<<values[i][j]<<endl;
		}
	}
	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