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 cpp0600548255 at 2006-03-26 00:12:01 on Problem 1166
/*用枚举的方法枚举每一种情况
*2006,3,25
*下午
*poj 1166
*-------------------------------------------*/
#include<iostream>
#include<cmath>
using namespace std;
bool check(int array[]);
int allusednum;
int movestep[10][10]={{0,0,0,0,0,0,0,0,0,0},
						{0,1,1,0,1,1,0,0,0,0},//1
						{0,1,1,1,0,0,0,0,0,0},//2
						{0,0,1,1,0,1,1,0,0,0},//3
						{0,1,0,0,1,0,0,1,0,0},//4
						{0,0,1,0,1,1,1,0,1,0},//5
						{0,0,0,1,0,0,1,0,0,1},//6
						{0,0,0,0,1,1,0,1,1,0},//7
						{0,0,0,0,0,0,0,1,1,1},//8
						{0,0,0,0,0,1,1,0,1,1}};//9

int main()
{	
	int original_sense[10],usedtimes[10],temp[10],output[10];
	long min=0;
	min=int(pow(4,9));

	//give them number
	memset(original_sense,0,10*sizeof(int));
	memset(usedtimes,0,10*sizeof(int));
	memset(temp,0,10*sizeof( int ));
	memset(output,0,10*sizeof( int ));

	//input
	for(int j=1;j<=9;j++){
		cin>>original_sense[j];
		temp[j]=original_sense[j];
	}

	//begin to count-find out the times of every move
	for( usedtimes[1]=0;usedtimes[1]<=3;usedtimes[1]++)
	for( usedtimes[2]=0;usedtimes[2]<=3;usedtimes[2]++)
	for( usedtimes[3]=0;usedtimes[3]<=3;usedtimes[3]++)
	for( usedtimes[4]=0;usedtimes[4]<=3;usedtimes[4]++)
	for( usedtimes[5]=0;usedtimes[5]<=3;usedtimes[5]++)
	for( usedtimes[6]=0;usedtimes[6]<=3;usedtimes[6]++)
	for( usedtimes[7]=0;usedtimes[7]<=3;usedtimes[7]++)
	for( usedtimes[8]=0;usedtimes[8]<=3;usedtimes[8]++)
	for( usedtimes[9]=0;usedtimes[9]<=3;usedtimes[9]++)	
	{	
		//相加所有步骤对闹钟的影响
		for(int i=1;i<=9;i++)
			for(int j=1;j<=9;j++)
				temp[i]=temp[i]+usedtimes[j]*movestep[j][i];

		//
		//求所有步骤的总数
		for( i=1;i<=9;i++)
				allusednum+=usedtimes[i];
		if(allusednum<min)
		{	
			if(check(temp))
			{	
				min=allusednum;
				for(int i=1;i<=9;i++)
				output[i]=usedtimes[i];
				allusednum=0;
			}
		}
		for(int k=1;k<=9;k++)
		temp[k]=original_sense[k];
	}
	//输出
	for(int i=1;i<=9;i++)
		for(int j=1;j<=output[i];j++)
		{	
			 cout<<i<<' ';
		}
	cout<<endl;
	return 0;
}
bool check(int array[])
{	
	for(int i=1;i<=9;i++)
		if(array[i]%4!=0)return false;
	return true;

}






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