1. 程式人生 > >POJ 1166 The Clocks

POJ 1166 The Clocks

acm

3x3的鐘盤,分別有12點,3點,6點,9點4中情形。然後給出的方法表中,數字對應著要轉動的鐘表,每次順時針轉動90度,求使得所有的鐘表都指向12點的最短操作方法。
參考文章:https://www.cnblogs.com/kuangbin/archive/2012/08/31/2666167.html

#include<cstdio>

int main()
{
int b[10],t[10],c[10],i;//表盤的狀態,數字對應方法的轉動次數,轉動後表盤的結果
for(i=1;i<=9;i++) scanf("%d",&b[i]);
for(t[1]=0;t[1]<=3;t[1]++)//轉動4次相當於沒有轉動

for(t[2]=0;t[2]<=3;t[2]++)
for(t[3]=0;t[3]<=3;t[3]++)
for(t[4]=0;t[4]<=3;t[4]++)
for(t[5]=0;t[5]<=3;t[5]++)
for(t[6]=0;t[6]<=3;t[6]++)
for(t[7]=0;t[7]<=3;t[7]++)
for(t[8]=0;t[8]<=3;t[8]++)
for(t[9]=0;t[9]<=3;t[9]++)
{
c[1]=(b[1]+t[1]+t[2]+t[4])%4;
c[2]=(b[2]+t[1]+t[2]+t[3]+t[5])%4;
c[3]=(b[3]+t[2]+t[3]+t[6])%4;
c[4]=(b[4]+t[1]+t[4]+t[5]+t[7])%4;
c[5]=(b[5]+t[1]+t[3]+t[5]+t[7]+t[9])%4;
c[6]=(b[6]+t[3]+t[5]+t[6]+t[9])%4;
c[7]=(b[7]+t[4]+t[7]+t[8])%4;
c[8]=(b[8]+t[5]+t[7]+t[8]+t[9])%4;
c[9]=(b[9]+t[6]+t[8]+t[9])%4;
if(c[1]+c[2]+c[3]+c[4]+c[5]+c[6]+c[7]+c[8]+c[9]==0)
{
for(i=0;i<t[1];i++) printf("1 ");
for(i=0;i<t[2];i++) printf("2 ");
for(i=0;i<t[3];i++) printf("3 ");
for(i=0;i<t[4];i++) printf("4 ");
for(i=0;i<t[5];i++) printf("5 ");
for(i=0;i<t[6];i++) printf("6 ");
for(i=0;i<t[7];i++) printf("7 ");
for(i=0;i<t[8];i++) printf("8 ");
for(i=0;i<t[9];i++) printf("9 ");
printf("\n");
return 0;
}
}
}

POJ 1166 The Clocks