poj The Clocks 1166

/*
題意:給一個3*3的圖,每個數字都在0-3的範圍內,0代表鐘錶12點,1代表3點,2,3,分別代表6點和9點有九種方式
移動,每種移動特定的幾個,每次移動都順勢針移動90度
*/
#include<stdio.h>
int main()
{
    int a[15],b[15],c[15],i;
    for(i=1; i<=9; i++)
        scanf("%d",&a[i]);
    //枚舉每種移動多少次
    for(b[1]=0; b[1]<=3; b[1]++)
    for(b[2]=0; b[2]<=3; b[2]++)
    for(b[3]=0; b[3]<=3; b[3]++)
    for(b[4]=0; b[4]<=3; b[4]++)
    for(b[5]=0; b[5]<=3; b[5]++)
    for(b[6]=0; b[6]<=3; b[6]++)
    for(b[7]=0; b[7]<=3; b[7]++)
    for(b[8]=0; b[8]<=3; b[8]++)
    for(b[9]=0; b[9]<=3; b[9]++)
    {
         c[1]=(a[1]+b[1]+b[2]+b[4])%4;//鐘錶1的最後時間爲原始時間a[1],加上第一種移動的次數,第二種移動的次數加上第四種移動的次數後對4取餘
         c[2]=(a[2]+b[1]+b[2]+b[3]+b[5])%4;
         c[3]=(a[3]+b[2]+b[3]+b[6])%4;
         c[4]=(a[4]+b[1]+b[4]+b[5]+b[7])%4;
         c[5]=(a[5]+b[1]+b[3]+b[5]+b[7]+b[9])%4;
         c[6]=(a[6]+b[3]+b[5]+b[6]+b[9])%4;
         c[7]=(a[7]+b[4]+b[7]+b[8])%4;
         c[8]=(a[8]+b[5]+b[7]+b[8]+b[9])%4;
         c[9]=(a[9]+b[6]+b[8]+b[9])%4;
         int sum=-1;
         for(int i=1; i<=9; i++)
            sum+=c[i];
        if(sum+1==0)
        {
            for(int i=1;i<=9;i++)
            {
                for(int j=1;j<=b[i];j++)
                    printf("%d ",i);
            }
            return 0;
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章