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:presentation error!各位大牛

Posted by huangjinyc at 2011-04-07 14:08:44 on Problem 1014
In Reply To:presentation error!各位大牛 Posted by:huangjinyc at 2011-04-07 14:05:26
> 帮我看看格式哪儿有问题啊,各位大牛
> #include<stdio.h>
> #include<stdlib.h>
> #include<string.h>
> #define N 6
> char WR[]="Can't be divided.\n";
> char SC[]="Can be divided.\n";
> int marbles[N]={0};
> int marbleA[N]={0}; //分成AB两堆
> int marbleB[N]={0};
> int canBeChangeInB(int changeData) //回溯找是否能在B中找到组合的和等于changeData的大小,能则返回1,否则返回0
> {
> 	int i;
> 	for(i=N-1;i>=0;--i)
> 	{
> 		if(marbleB[i]==0)
> 		{
> 			continue;
> 		}
> 		if(changeData==(i+1))
> 		{
> 			return 1;
> 		}
> 		if(changeData-(i+1)>0)
> 		{
>             --marbleB[i];
> 			if(canBeChangeInB(changeData-(i+1)))
> 				return 1;
> 			++marbleB[i];
> 
> 		}
> 
> 	}
> 	return 0;
> }
> int TryMakeEven(int dev)
> {
> 	int i;
> 	int sum=0;
> 	for(i=N-1;i>=0;--i)
> 	{
>         if(marbleA[i]==0)
> 		{
> 			continue;
> 		}
> 		if(canBeChangeInB((i+1)+dev))
> 		{
> 			return 1;
> 		}
> 
> 	}
> 	return 0;
> }
> void findAns(void)
> {
> 	int sum=0;
> 	int dev=0;
> 	int i;
> 	for(i=0;i<N;++i)
> 	{
>         sum+=marbles[i]*(i+1);
> 	}
> 	if(sum%2==1)
> 	{
> 		printf(WR);
> 		return;
> 	}
> 	dev=sum/2;
> 	
> 	for(i=N-1;i>=0;--i) //计算A中还差多少
> 	{   
> 	   for(;;)
> 	   {
>           if(marbles[i]==0)
> 		  {
> 			  break;
> 		  }
> 		  if(dev-(i+1)>0)
> 		  {
> 			  dev-=(i+1);
> 			  ++marbleA[i];
> 			  --marbles[i];
> 		  }
> 		  else if(dev-(i+1)==0)
> 		  {
>               printf(SC);
> 	          return;
> 		  }
> 		  else
> 		  {
>              marbleB[i]=marbles[i];
> 			 break;
> 		  }
> 	   }
> 	}
> 	if(dev==0)
> 	{
>         printf(SC);
> 		return;
> 	}
> 	//如果A端还不够,则用A中的某一个和B中的两个或者两个以上的调换
>     if( TryMakeEven(dev))
> 	{
>         printf(SC);
> 		return;
> 	}
> 	else
> 	{
>        printf(WR);
> 		return;
> 	}
> 
> }
> int main(void)
> {
> 	int i=1;
> 	while((scanf("%d %d %d %d %d %d",&marbles[0],&marbles[1],&marbles[2],&marbles[3],&marbles[4],&marbles[5]))!=EOF)
> 	{
> 		if(marbles[0]==0&&marbles[1]==0&&marbles[2]==0&&marbles[3]==0&&marbles[4]==0&&marbles[5]==0)
> 			return 1;
> 		printf("Collection #%d:\n",i);
>         findAns();
> 		memset(marbleA,0,N*sizeof(int));
> 		memset(marbleB,0,N*sizeof(int));
> 		++i;
> 	}
> 	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