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

此代码绝非show,意在抛砖引玉^_^

Posted by whuwinnie at 2008-08-03 17:42:29 on Problem 1166
#include <iostream>
#include <string.h>
#include <stdlib.h>
using namespace std;
const int cmd[9][9] = {  
	{1, 1, 0, 1, 1, 0, 0, 0, 0},
	{1, 1, 1, 0, 0, 0, 0, 0, 0},
	{0, 1, 1, 0, 1, 1, 0, 0, 0},
	{1, 0, 0, 1, 0, 0, 1, 0, 0},//
	{0, 1, 0, 1, 1, 1, 0, 1, 0},//
	{0, 0, 1, 0, 0, 1, 0, 0, 1},
	{0, 0, 0, 1, 1, 0, 1, 1, 0},
	{0, 0, 0, 0, 0, 0, 1, 1, 1},//
	{0, 0, 0, 0, 1, 1, 0, 1, 1}//
};
int x[9], a[9];
bool ok()
{
	int tmp[9];
	for(int i = 0; i < 9; i++)
		tmp[i] = a[i];
	for(int j = 0; j < 9; j++)
		for(int i = 0; i < 9; i++)
			tmp[j] = (tmp[j] + cmd[i][j] * x[i]) % 4;
	for(int i = 0; i < 9; i++)
		if(tmp[i] != 0)
			return 0;
	return 1;
}
void print()
{
	for(int i = 0; i < 9; i++)
		for(int j = 0; j < x[i]; j++)
			printf("%d ", i + 1);
	printf("\n");
		
}
int main()
{
	for(int i = 0; i < 9; i++)
		cin >> a[i];
	memset(x, -1, sizeof(x));
	int k = 0;
	while(k >= 0)
	{
		x[k] += 1;       
		if(x[k] <= 3)
		{
			if(k == 8 && ok())
			{
				print();
			        break;
			}
			else if(k < 8)
				k++;
		}
		else
		{
			x[k] = -1;
			k--;
		}
	}
	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