• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 40, 文章 - 0, 評論 - 19, 引用 - 0
            數據加載中……

            TJU 2749. Marbles in Three Baskets ( Mid Atlantic North America 2006)

            由每個最末的狀態(n,n,n)推得所有可行的狀態,并記錄被推得狀態的來源和步長,類似篩法的方式,沒有被擴展到的情況即無法到達的情況,標記其步長仍為0.
              1#include<stdio.h>
              2#include<string.h>
              3
              4struct Q{
              5 int flag;
              6 int a;
              7 int b;
              8 int c;
              9}
            ;
             10Q f[61][61][61];
             11
             12 int chang1(Q t);
             13 int chang2(Q t);
             14 int chang3(Q t);
             15 int chang4(Q t);
             16 int chang5(Q t);
             17 int chang6(Q t);
             18 
             19int chang1(Q t){
             20    Q ne;
             21    if(t.a%2 !=0 ) return 0 ;      
             22    ne.a = t.a /2;
             23    ne.b = t.b+ne.a;
             24    ne.c = t.c;
             25
             26    if(ne.a == ne.b && ne.b == ne.c) return 0 ;
             27    if(f[ne.a][ne.b][ne.c].flag != 0 && f[ne.a][ne.b][ne.c].flag<t.flag+1return 0 ; 
             28    f[ne.a][ne.b][ne.c].flag = t.flag+1
             29    f[ne.a][ne.b][ne.c].a=t.a;
             30    f[ne.a][ne.b][ne.c].b=t.b;
             31    f[ne.a][ne.b][ne.c].c=t.c;        ne.flag = t.flag+1;    
             32    return chang1(ne)+chang2(ne)+chang3(ne)+chang4(ne)+chang5(ne)+chang6(ne); 
             33}

             34int chang2(Q t){
             35    Q ne;
             36    if(t.a%2 !=0 ) return 0 ;
             37    ne.a = t.a /2;
             38    ne.c = t.c+ne.a;
             39    ne.b = t.b;
             40     
             41    if(ne.a == ne.b && ne.b == ne.c) return 0 ;
             42    if(f[ne.a][ne.b][ne.c].flag != 0 && f[ne.a][ne.b][ne.c].flag<t.flag+1return 0 ;        
             43    f[ne.a][ne.b][ne.c].flag = t.flag+1
             44    f[ne.a][ne.b][ne.c].a=t.a;
             45    f[ne.a][ne.b][ne.c].b=t.b;
             46    f[ne.a][ne.b][ne.c].c=t.c;      ne.flag = t.flag+1
             47    return chang1(ne)+chang2(ne)+chang3(ne)+chang4(ne)+chang5(ne)+chang6(ne); 
             48}

             49int chang3(Q t){
             50    Q ne;
             51    if(t.b%2 !=0 ) return 0 ;    
             52    ne.b = t.b /2;
             53    ne.a = t.a+ne.b;
             54    ne.c = t.c;
             55
             56    if(ne.a == ne.b && ne.b == ne.c) return 0 ;
             57    if(f[ne.a][ne.b][ne.c].flag != 0 && f[ne.a][ne.b][ne.c].flag<t.flag+1return 0 ; 
             58    f[ne.a][ne.b][ne.c].flag = t.flag+1
             59    f[ne.a][ne.b][ne.c].a=t.a;
             60    f[ne.a][ne.b][ne.c].b=t.b;
             61    f[ne.a][ne.b][ne.c].c=t.c;        ne.flag = t.flag+1;   
             62    return chang1(ne)+chang2(ne)+chang3(ne)+chang4(ne)+chang5(ne)+chang6(ne); 
             63}

             64int chang4(Q t){
             65    Q ne;
             66    if(t.b%2 !=0 ) return 0 ;    
             67    ne.b = t.b /2;
             68    ne.c = t.c+ne.b;
             69    ne.a = t.a;
             70  
             71    if(ne.a == ne.b && ne.b == ne.c) return 0 ;
             72    if(f[ne.a][ne.b][ne.c].flag != 0 && f[ne.a][ne.b][ne.c].flag<t.flag+1return 0 ;
             73    f[ne.a][ne.b][ne.c].flag = t.flag+1
             74    f[ne.a][ne.b][ne.c].a=t.a;
             75    f[ne.a][ne.b][ne.c].b=t.b;
             76    f[ne.a][ne.b][ne.c].c=t.c;      ne.flag = t.flag+1;   
             77    return chang1(ne)+chang2(ne)+chang3(ne)+chang4(ne)+chang5(ne)+chang6(ne); 
             78}

             79
             80int chang5(Q t){
             81    Q ne;
             82    if(t.c%2 !=0 ) return 0 ;    
             83    ne.c = t.c /2;
             84    ne.a = t.a+ne.c;
             85    ne.b = t.b;
             86     
             87    if(ne.a == ne.b && ne.b == ne.c) return 0 ;
             88    if(f[ne.a][ne.b][ne.c].flag != 0 && f[ne.a][ne.b][ne.c].flag<t.flag+1return 0 ;      
             89    f[ne.a][ne.b][ne.c].flag = t.flag+1
             90    f[ne.a][ne.b][ne.c].a=t.a;
             91    f[ne.a][ne.b][ne.c].b=t.b;
             92    f[ne.a][ne.b][ne.c].c=t.c;    ne.flag = t.flag+1
             93    return chang1(ne)+chang2(ne)+chang3(ne)+chang4(ne)+chang5(ne)+chang6(ne); 
             94}

             95int chang6(Q t){
             96    Q ne;
             97    if(t.c%2 !=0 ) return 0 ;    
             98    ne.c = t.c /2;
             99    ne.b = t.b+ne.c;
            100    ne.a = t.a;
            101    
            102    if(ne.a == ne.b && ne.b == ne.c) return 0 ;
            103    if(f[ne.a][ne.b][ne.c].flag != 0 && f[ne.a][ne.b][ne.c].flag<t.flag+1return 0 ;    
            104    f[ne.a][ne.b][ne.c].flag = t.flag+1
            105    f[ne.a][ne.b][ne.c].a=t.a;
            106    f[ne.a][ne.b][ne.c].b=t.b;
            107    f[ne.a][ne.b][ne.c].c=t.c;     ne.flag = t.flag+1;  
            108    return chang1(ne)+chang2(ne)+chang3(ne)+chang4(ne)+chang5(ne)+chang6(ne); 
            109}

            110void init(){
            111     Q temp ;
            112     for(int i = 1 ; i <= 20 ; i++ ){
            113             f[i][i][i].a = i;
            114             f[i][i][i].b = i;
            115             f[i][i][i].c = i;
            116             f[i][i][i].flag = 0;
            117             temp  = f[i][i][i];
            118            if (i % 2 != 0 )continue
            119             chang1(temp)+chang2(temp)+chang3(temp)+chang4(temp)+chang5(temp)+chang6(temp);
            120     }

            121}

            122int main(){
            123    init();
            124    Q f2;  
            125    while(scanf("%d%d%d",&f2.a,&f2.b,&f2.c)!=EOF){
            126     printf("%4d%4d%4d\n",f2.a,f2.b,f2.c);
            127     while(f[f2.a][f2.b][f2.c].flag){
            128     printf("%4d%4d%4d\n",f[f2.a][f2.b][f2.c].a,f[f2.a][f2.b][f2.c].b,f[f2.a][f2.b][f2.c].c);
            129            f2 = f[f2.a][f2.b][f2.c];
            130    }
                   
            131    printf("============\n");
            132    }

            133return 0 ;
            134}

            135

            posted on 2008-10-09 23:41 hadn't 閱讀(202) 評論(0)  編輯 收藏 引用

            欧美久久综合九色综合| 无码国内精品久久人妻蜜桃| 亚洲愉拍99热成人精品热久久| 18岁日韩内射颜射午夜久久成人| 伊人久久精品无码av一区| 久久久WWW成人| 久久久久一本毛久久久| 国产免费久久久久久无码| 欧美久久综合性欧美| 久久久久久免费一区二区三区| 日产精品99久久久久久| 中文精品久久久久人妻不卡| 久久夜色精品国产亚洲| 7777久久久国产精品消防器材| 亚洲性久久久影院| 久久久久久综合网天天| 久久精品国产亚洲AV不卡| 伊人久久大香线焦AV综合影院| 亚洲色欲久久久综合网东京热| 色诱久久久久综合网ywww| 久久久亚洲欧洲日产国码aⅴ| 精品国际久久久久999波多野| 亚洲一区中文字幕久久| 久久综合精品国产一区二区三区| 国产精品美女久久福利网站| 亚洲午夜久久久久妓女影院 | 久久久噜噜噜久久中文福利| 久久久久人妻精品一区二区三区| 久久99国产精一区二区三区| 久久97久久97精品免视看秋霞| 国产精品99久久久久久宅男小说 | 伊人久久无码中文字幕| 久久99国内精品自在现线| 久久99精品国产99久久6| 中文字幕乱码人妻无码久久| 麻豆精品久久久一区二区| 超级碰碰碰碰97久久久久| 77777亚洲午夜久久多喷| 中文字幕久久精品| 91久久成人免费| 国内精品久久久久久99|