• <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 閱讀(374) 評論(0)  編輯 收藏 引用 所屬分類: 題目分類:搜索
            国产精品美女久久久久av爽| 久久综合成人网| 精品熟女少妇AV免费久久| 久久国产精品视频| www亚洲欲色成人久久精品| 国产成人综合久久综合| 国产美女久久精品香蕉69| 久久久久人妻精品一区| 久久久精品人妻一区二区三区四| 亚洲级αV无码毛片久久精品| 狠狠色狠狠色综合久久| 久久综合狠狠综合久久综合88| 久久无码人妻一区二区三区午夜| 亚洲AV乱码久久精品蜜桃| 久久精品国产久精国产| 久久久久亚洲av成人无码电影| 久久综合九色欧美综合狠狠| 亚洲Av无码国产情品久久| 综合人妻久久一区二区精品| 久久久久久亚洲AV无码专区| 久久综合丝袜日本网| 久久婷婷五月综合成人D啪| 伊人久久一区二区三区无码| 日日噜噜夜夜狠狠久久丁香五月| 久久福利青草精品资源站| 久久久综合香蕉尹人综合网| 7777精品久久久大香线蕉| 国产精品久久精品| 精品久久久久久无码不卡| 久久精品九九亚洲精品| 精品久久久无码中文字幕天天| 国产精品中文久久久久久久| 国产精品一久久香蕉国产线看| 麻豆久久| 久久精品国内一区二区三区| 久久久久99这里有精品10| 国产精品久久永久免费| 久久精品免费一区二区| 国产免费福利体检区久久| 亚洲国产精品无码久久久蜜芽| 久久国产精品免费一区|