3868733_ac_63ms_440k.cc

来自「POJ 1166己AC源代码」· CC 代码 · 共 69 行

CC
69
字号
#include <iostream>
#include <vector>
using namespace std;

int off[9][9]={
   //A,B,C,D,E,F,G,H,I
	{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 main()
{
	int min=10000000;
	vector<int> result;
	int a[9], b[9], c[9];
	for(int i=0; i<9; i++)
		cin>>b[i];
	for(a[0]=0; a[0]<4; a[0]++)
	for(a[1]=0; a[1]<4; a[1]++)
	for(a[2]=0; a[2]<4; a[2]++)
	for(a[3]=0; a[3]<4; a[3]++)
	for(a[4]=0; a[4]<4; a[4]++)
	for(a[5]=0; a[5]<4; a[5]++)
	for(a[6]=0; a[6]<4; a[6]++)
	for(a[7]=0; a[7]<4; a[7]++)
	for(a[8]=0; a[8]<4; a[8]++)
	{
		bool flag=true;
		for(int i=0; i<9; i++)
		{
			c[i]=b[i];
			for(int j=0; j<9; j++)
				c[i]+=a[j]*off[j][i];
			if(c[i]%4!=0)
			{
				flag=false;
				break;
			}
		}
		if(flag)
		{
			int st=0;
			for(int i=0; i<9; i++)
				st+=a[i];
			if(st<min)
			{
				min=st;
				result.clear();
				for(int i=0; i<9; i++)
					result.push_back(a[i]);
			}
		}
	}
	for(int i=0; i<9; i++)
	{
		if(result[i]>0)
			for(int j=0; j<result[i]; j++)
				printf("%d ", i+1);
	}
	printf("\n");
	return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?