• <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>
            心如止水
            Je n'ai pas le temps
            posts - 400,comments - 130,trackbacks - 0
            我的第一次……
            第一次使用九維數組……
            簡單地BFS即可。
            以下是我的代碼:
            #include<stdio.h>
            #include
            <string.h>
            #define max_size 300000
            const long change[  ][9]={{1,1,0,1,1,0,0,0,0},
                                      {
            1,1,1,0,0,0,0,0,0},
                                      {
            0,1,1,0,1,1,0,0,0},
                                      {
            1,0,0,1,0,0,1,0,0},
                                      {
            0,1,0,1,1,1,0,1,0},
                                      {
            0,0,1,0,0,1,0,0,1},
                                      {
            0,0,0,1,1,0,1,1,0},
                                      {
            0,0,0,0,0,0,1,1,1},
                                      {
            0,0,0,0,1,1,0,1,1}};
            struct
            {
                
            long count,front,rear,item[max_size][9];
            }q;
            void Clear()
            {
                q.count
            =0;q.front=0;q.rear=-1;
            }
            void Push(long *x)
            {
                q.count
            ++;
                q.rear
            ++;
                
            for(long i=0;i<9;i++)
                  q.item[q.rear][i]
            =x[i];
            }
            void Pop(long *x)
            {
                q.count
            --;
                
            for(long i=0;i<9;i++)
                  x[i]
            =q.item[q.front][i];
                q.front
            ++;
            }
            bool Empty()
            {
                
            return (q.count==0);
            }

            int d[4][4][4][4][4][4][4][4][4];
            int f[4][4][4][4][4][4][4][4][4];
            long r[17];

            void init()
            {
                
            for(long i=0;i<9;i++) scanf("%ld",&r[i]);
                memset(d,
            -1,sizeof(d));
                memset(f,
            -1,sizeof(f));
            }
            bool ok(long *x)
            {
                
            for(long i=0;i<9;i++)
                  
            if(x[i]) return false;
                
            return true;
            }
            void bfs()
            {
                
            long t[17],s[17];
                Clear();
                d[r[
            0]][r[1]][r[2]][r[3]][r[4]][r[5]][r[6]][r[7]][r[8]]=0;
                Push(r);
                
            while(!Empty())
                {
                   Pop(t);
                   
            if(ok(t)) break;
                   
                   
            for(long i=0;i<9;i++)
                   {
                      
            for(long j=0;j<9;j++) s[j]=(t[j]+change[i][j])%4;
                      
            if(d[s[0]][s[1]][s[2]][s[3]][s[4]][s[5]][s[6]][s[7]][s[8]]==-1)
                      {
                         d[s[
            0]][s[1]][s[2]][s[3]][s[4]][s[5]][s[6]][s[7]][s[8]]=d[t[0]][t[1]][t[2]][t[3]][t[4]][t[5]][t[6]][t[7]][t[8]]+1;
                         f[s[
            0]][s[1]][s[2]][s[3]][s[4]][s[5]][s[6]][s[7]][s[8]]=i;
                         Push(s);
                      }
                   }
                }
            }
            void output()
            {
                
            long t[17],ans[30],tot,tmp;
                
            for(long i=0;i<9;i++) t[i]=0;
                tot
            =0;
                
            while(f[t[0]][t[1]][t[2]][t[3]][t[4]][t[5]][t[6]][t[7]][t[8]]!=-1)
                {
                   tot
            ++;
                   tmp
            =f[t[0]][t[1]][t[2]][t[3]][t[4]][t[5]][t[6]][t[7]][t[8]];
                   ans[tot]
            =tmp+1;
                   
            for(long i=0;i<9;i++)
                     
            if(change[tmp][i])
                       t[i]
            =(t[i]+3)%4;
                }
                
            bool first=true;
                
            for(long i=tot;i>=1;i--)
                {
                   
            if(first) first=false;
                   
            else printf(" ");
                   printf(
            "%ld",ans[i]);
                }
                printf(
            "\n");
            }
            int main()
            {
                init();
                bfs();
                output();
            return 0;
            }


            posted on 2010-04-07 21:47 lee1r 閱讀(366) 評論(0)  編輯 收藏 引用 所屬分類: 題目分類:搜索
            国产亚洲美女精品久久久| 亚洲精品午夜国产va久久 | 国产高潮国产高潮久久久| 精品无码久久久久久午夜| 久久精品国产一区| 亚洲欧美久久久久9999| 日韩乱码人妻无码中文字幕久久| 国产一级持黄大片99久久| 欧美激情精品久久久久久久| 久久久久久夜精品精品免费啦| 久久激情亚洲精品无码?V| 色综合久久久久久久久五月| 久久精品中文字幕一区| 久久国产亚洲精品无码| 合区精品久久久中文字幕一区| 国产精品久久波多野结衣| 无码乱码观看精品久久| 久久婷婷国产麻豆91天堂| 久久精品国产亚洲AV麻豆网站| 久久亚洲国产成人精品无码区| 国产V亚洲V天堂无码久久久 | 亚洲AV无码成人网站久久精品大| 久久精品这里热有精品| 性做久久久久久久| 久久久久久曰本AV免费免费| 久久天天日天天操综合伊人av| 韩国三级大全久久网站| 欧美一区二区三区久久综合 | 欧美午夜精品久久久久久浪潮| 久久青青草原精品影院| 国产一级做a爰片久久毛片| 99久久99久久久精品齐齐| 久久久精品人妻一区二区三区四| 99久久无色码中文字幕人妻| 精品久久久无码人妻中文字幕| 香蕉久久永久视频| 日本精品一区二区久久久| 久久亚洲高清综合| 久久久久久曰本AV免费免费| 精品久久久无码人妻中文字幕| 亚洲精品无码久久久久|