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 yiyiyi4321 at 2006-05-02 02:31:49 on Problem 1042
程序1:
#include <stdio.h>

#define M 30

int i, j, n, h, ri;
int f[M], tf[M], d[M], t[M], temp, sum, maxsum, max, rec[M], tp[M];

int main()
{
	while(scanf("%d",&n),n>0)
	{
		scanf("%d", &h);
		h *= 12;
		for(i = 0; i < n; i ++)
			scanf("%d",&tf[i]);
		for(i = 0; i < n; i ++)
			scanf("%d",&d[i]);
		t[0] = 0;	
		for(i = 1; i < n ; i ++)
		{
			scanf("%d",&t[i]);
			t[i] += t[i-1];
		}
		maxsum = 0;
		for(i = n-1; i >= 0; i --)
		{
			temp = h - t[i];
			for(j = 0; j <= n-1; j ++ )
			{
				f[j] = tf[j];
				tp[j] = 0;
			}
			sum = 0;
			while( temp > 0 )
			{
				ri = 0;
				for( j=1; j<=i; j++ )
					if( f[j]>f[ri] )
						ri=j;
				if(f[ri]==0)break;
				sum+=f[ri];
				f[ri]-=d[ri];
				if(f[ri] < 0 )f[ri] = 0;
				tp[ri] += 5;
				temp--;
			}
			tp[0]+=temp*5;
			if(sum > maxsum)
			{
				for( j=0; j<n; j++ )
					rec[j] = tp[j];
				maxsum = sum;					
			}
			else if(sum == maxsum)
			{
				for( j = 0; j < n; j ++ )
					if(rec[j] <= tp[j])break;
				if( j != n )
				for( j = 0; j < n; j ++ )
					rec[j] == tp[j];
			}
		}
		printf("%d", rec[0]);
		for(j = 1; j < n; j ++)
			printf(", %d", rec[j]);
		printf( "\nNumber of fish expected: %d\n\n", maxsum );
	}
	return 0;
}

程序2:
#include <stdio.h>

int f[26],d[26],t[26],ff[26],tt[26];
int best_t[26],max_fish,n,h;

int main()
{
	int i,j,k,left_time,fish;
	while(scanf("%d", &n),n>0)
	{
		scanf("%d", &h);h*=12;
		for(i=0;i<n;i++)
			scanf("%d", &f[i]);
		for(i=0;i<n;i++)
			scanf("%d", &d[i]);
		t[0] = 0;
		for(i=1;i<n;i++)
		{
			scanf("%d", &t[i]);
			t[i] += t[i-1];
		}
		max_fish = 0;
		for(k=n-1;k>=0;k--)
		{
			left_time = h-t[k];
			for(i=0;i<n;i++)
			{
				ff[i] = f[i];
				tt[i] = 0;
			}
			fish = 0;
			while(left_time > 0)
			{
				j = 0;
				for(i=1;i<=k;i++)
				{
					if(ff[i] > ff[j])
						j = i;
				}
				if(ff[j] == 0)
					break;
				tt[j] += 5;
				fish += ff[j];
				ff[j] -= d[j];
				if(ff[j] <=0)
					ff[j] = 0;
				left_time --;
			}
			tt[0] += left_time*5;
			if(fish > max_fish)
			{
				for(i=0;i<n;i++)
					best_t[i] = tt[i];
				max_fish = fish;
			}
			else
				if( fish==max_fish )
				{
					for(i=0;i<n;i++)
						if(best_t[i] <= tt[i])
							break;
					if(i != n)
						for(i=0;i<n;i++)best_t[i] = tt[i];
				}
		}
		printf("%d", best_t[0]);
		for(j = 1; j < n; j ++)
			printf(", %d", best_t[j]);
		printf( "\nNumber of fish expected: %d\n\n", max_fish );
	}
	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