枚举之二
//poj 1166 The Clocks
#include<iostream> //枚举 264K 297MS
#include<string>
using namespace std;
string str[10]={" ","ABDE","ABC","BCEF","ADG","BDEFH","CFI","DEGH","GHI","EFHI"};
int main()
{
int arr[3][3],tmp[3][3],ans[10];
for(int i=0;i<3;++i)
for(int j=0;j<3;++j)
cin>>arr[i][j];
for(ans[1]=0;ans[1]<4;++ans[1])
for(ans[2]=0;ans[2]<4;++ans[2])
for(ans[3]=0;ans[3]<4;++ans[3])
for(ans[4]=0;ans[4]<4;++ans[4])
for(ans[5]=0;ans[5]<4;++ans[5])
for(ans[6]=0;ans[6]<4;++ans[6])
for(ans[7]=0;ans[7]<4;++ans[7])
for(ans[8]=0;ans[8]<4;++ans[8])
for(ans[9]=0;ans[9]<4;++ans[9])
{
for(int i=0;i<3;++i)
for(int j=0;j<3;++j)
tmp[i][j]=arr[i][j];
for(int i=1;i<10;++i)
for(int j=0;j<ans[i];++j)
for(int k=0;k<str[i].length();++k)
{
int t=str[i][k]-'A';
tmp[t/3][t%3]=(tmp[t/3][t%3]+1)%4;
}
int tag=1;
for(int i=0;i<3&&tag;++i)
for(int j=0;j<3&&tag;++j)
if(tmp[i][j]!=0)
tag=0;
if(tag)
{
for(int i=1;i<10;++i)
for(int j=0;j<ans[i];++j)
cout<<i<<" ";
cout<<endl;
return 0;
}
}
}