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

求牛人看看 动态规划超时

Posted by niuniu2006 at 2007-10-12 17:03:32 on Problem 1088
#include <iostream>

using namespace std;

int arr[101][101]={0};
	int brr[101][101][2]={0};
	int crr[101][101][2]={0};
int f(int x,int y,int ji)
{
	int com=-1;int count=0;int tem=(ji-1)%2;
	if(arr[x][y]<arr[x-1][y]&&crr[x-1][y][tem]==0)
	{
		if(com<brr[x-1][y][tem])
			com=brr[x-1][y][tem];
		++count;
	}
	if(arr[x][y]<arr[x+1][y]&&crr[x+1][y][tem]==0)
	{
		if(com<brr[x+1][y][tem])
			com=brr[x+1][y][tem];
		++count;
	}
	if(arr[x][y]<arr[x][y-1]&&crr[x][y-1][tem]==0)
	{
		if(com<brr[x][y-1][tem])
			com=brr[x][y-1][tem];
		++count;
	}
	if(arr[x][y]<arr[x][y+1]&&crr[x][y+1][tem]==0)
	{
		if(com<brr[x][y+1][tem])
			com=brr[x][y+1][tem];
		++count;}
	
	if(count)
	{
		brr[x][y][ji%2]=com+1;
		return 0;
	}else
	{
		crr[x][y][ji%2]=1;
		return 1;
		
	}
}

int main()
{
	
	
	int r,c;
	cin>>r>>c;
	int sum=r*c;
	for(int wo=1;wo<=r;++wo)
	{
		for(int ni=1;ni<=c;++ni)
		{
			cin>>arr[wo][ni];
		}
	}
	int ji=1;
	for(ji=1;;++ji)
	{
		for(int i=1;i<=r;++i)
		{
			for(int j=1;j<=c;++j)
			{
				if(crr[i][j][(ji-1)%2])
					continue;
				sum-=f(i,j,ji);
				
				if(sum==0)
				{
					cout<<ji<<endl;
					return 0;
				}
				
			}
		}
		for(int cc=1;cc<=r;++cc)
			for(int dd=1;dd<=c;++dd)
			{
				crr[cc][dd][(ji-1)%2]=crr[cc][dd][ji%2];
			}
	}



	
}

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