24h購物| | PChome| 登入
2009-05-31 06:18:35| 人氣296| 回應0 | 上一篇 | 下一篇

昇旗典禮

推薦 0 收藏 0 轉貼0 訂閱站台

作法:暴力枚舉

/*****************************************************/

#include<stdio.h>
#include<stdlib.h>

main()
{
 int n;
 scanf("%d",&n);
 while(n--)
   {
     int a,b;
     int num[10]={0};
     for(a=1;a<=9;a++)
      scanf("%d",&num[a]);
     int way[11]={0},min=100;
     int x1,x2,x3,x4,x5,x6,x7,x8,x9;
      for(x1=0;x1<4&&x1<min;x1++)
      for(x2=0;x2<4&&x1+x2<min;x2++)
      for(x3=0;x3<4&&x1+x2+x3<min;x3++)
      for(x4=0;x4<4&&x1+x2+x3+x4<min;x4++)
      for(x5=0;x5<4&&x1+x2+x3+x4+x5<min;x5++)
      for(x6=0;x6<4&&x1+x2+x3+x4+x5+x6<min;x6++)
      for(x7=0;x7<4&&x1+x2+x3+x4+x5+x6+x7<min;x7++)
      for(x8=0;x8<4&&x1+x2+x3+x4+x5+x6+x7+x8<min;x8++)
      for(x9=0;x9<4&&x1+x2+x3+x4+x5+x6+x7+x8+x9<min;x9++)
       {
         int s[10]={0};
         s[1]=num[1]+x1+x2+x4;
         s[2]=num[2]+x1+x2+x3+x5;
         s[3]=num[3]+x2+x3+x6;
         s[4]=num[4]+x1+x4+x5+x7;
         s[5]=num[5]+x1+x3+x5+x7+x9;
         s[6]=num[6]+x3+x5+x6+x9;
         s[7]=num[7]+x4+x7+x8;
         s[8]=num[8]+x5+x7+x8+x9;
         s[9]=num[9]+x6+x8+x9;
         for(a=1;a<=9;a++)
          if(s[a]%4!=0) break;
          if(a==10)
            {
              if(x1+x2+x3+x4+x5+x6+x7+x8+x9<min)
               {
                 min=x1+x2+x3+x4+x5+x6+x7+x8+x9;
                 way[1]=x1;
                 way[2]=x2;
                 way[3]=x3;
                 way[4]=x4;
                 way[5]=x5;
                 way[6]=x6;
                 way[7]=x7;     
                 way[8]=x8;
                 way[9]=x9;        
               }
            }
       }
     for(a=1;a<10;a++)
        for(b=0;b<way[a];b++)
        printf("%d ",a);
        printf("\n");
   }
 return 0;
}

台長: 來源不明
人氣(296) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 數位資訊(科技、網路、通訊、家電) | 個人分類: 資訊競賽 |
此分類下一篇:2008 海峽兩岸青少年程式設計競賽 雷曼兔
此分類上一篇:95北市資訊學科能力競賽 最大矩形 (Area)

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文