• <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
            我的第一次……
            第一次使用九維數(shù)組……
            簡單地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 閱讀(358) 評論(0)  編輯 收藏 引用 所屬分類: 題目分類:搜索
            久久久精品人妻一区二区三区蜜桃| 久久亚洲国产欧洲精品一| 亚洲伊人久久大香线蕉苏妲己| 精品多毛少妇人妻AV免费久久| 久久九九久精品国产| 久久综合狠狠综合久久激情 | 国产精品成人无码久久久久久| 久久久久久毛片免费看| 一级女性全黄久久生活片免费 | 精品久久久久久无码中文字幕一区| 久久人与动人物a级毛片| 中文国产成人精品久久不卡| 久久人人爽人人爽人人AV| 99久久精品午夜一区二区| 国产精品熟女福利久久AV| 无码国内精品久久综合88 | 波多野结衣AV无码久久一区| 久久精品国产亚洲AV无码麻豆| 国产一区二区精品久久| 久久嫩草影院免费看夜色| 伊人久久大香线蕉av一区| 久久久久久a亚洲欧洲aⅴ| 无夜精品久久久久久| MM131亚洲国产美女久久| 久久久亚洲精品蜜桃臀| 无码国产69精品久久久久网站| 国产精品va久久久久久久| 久久天天躁夜夜躁狠狠躁2022| 美女写真久久影院| 亚洲色婷婷综合久久| 久久精品成人| 精品免费久久久久久久| 久久这里都是精品| 国产精品日韩欧美久久综合| 狠狠色丁香久久婷婷综合五月 | 91精品国产9l久久久久| 久久无码AV中文出轨人妻| 久久91亚洲人成电影网站| 国产aⅴ激情无码久久| 亚洲国产精品嫩草影院久久| 久久国产精品久久国产精品|