POJ 1166 The Clocks
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POJ 1166 The Clocks相关的知识,希望对你有一定的参考价值。
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的主要内容,如果未能解决你的问题,请参考以下文章
POJ 1166The Clocks 高斯消元 + exgcd(纯属瞎搞)