P1016 北京2008的挂钟
#include <iostream>
#include <cstring> using namespace std;
int effect[9][5]={{1,2,4,5,0},{1,2,3,0,0},{2,3,5,6,0},{1,4,7,0,0},{2,4,5,6,8},{3,6,9,0,0},{4,5,7,8,0},{7,8,9,0,0},{5,6,8,9,0}};
int size[9]={4,3,4,3,5,3,4,3,4};
int a[10];
int clocks[10];
int t[10];
void print()
{
for(int i=0;i<9;i++)
for(int j=0;j<a[i];j++)cout<<i+1<<" ";
}
bool check()
{
int i,j,k,c;
for(i=0;i<9;i++)t[i]=clocks[i];
for(i=0;i<9;i++)
{
if(a[i]==0)continue;
for(j=0;j<a[i];j++)
{
for(k=0;k<size[i];k++)
{
t[effect[i][k]-1]=(t[effect[i][k]-1]+3)%12;
}
}
}
for(i=0;i<9;i++)if(t[i]!=0&&t[i]!=12)return false;
print();
return true;
}
int main()
{
int i;
for(i=0;i<9;i++){cin>>clocks[i];clocks[i]*=3;}
for(a[8]=0;a[8]<4;a[8]++)
for(a[7]=0;a[7]<4;a[7]++)
for(a[6]=0;a[6]<4;a[6]++)
for(a[5]=0;a[5]<4;a[5]++)
for(a[4]=0;a[4]<4;a[4]++)
for(a[3]=0;a[3]<4;a[3]++)
for(a[2]=0;a[2]<4;a[2]++)
for(a[1]=0;a[1]<4;a[1]++)
for(a[0]=0;a[0]<4;a[0]++)
if(check())return 0;
return 0;
}