青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

pku1224 PICTURE PUZZLE 拼圖游戲:回溯法

題目:

不用多解釋了吧,給出每個小塊,可以旋轉,求一種拼圖方案

題解:
就是基本的回溯法
搜索的時候注意下次序,可以剪枝不少~

5

1

6

4

0

2

8

3

7


這種搜索題我喜歡用面向對象的方法來寫,很清楚,不同意錯,代碼也很容易看懂。大家看代碼吧
代碼:
  1/*
  2Source Code
  3
  4Problem: 1224        User: yzhw
  5Memory: 684K        Time: 32MS
  6Language: G++        Result: Accepted
  7Source Code
  8*/

  9# include <iostream>
 10# include <string>
 11# include <cstring>
 12# include <cstdio>
 13using namespace std;
 14struct piece
 15{
 16    char type[4][5],id[5];
 17    int start;
 18    void TurnRight()
 19    {
 20        start=(start+1)%4;
 21    }

 22    char *get(int pos)
 23    {
 24        return type[(start+pos)%4];
 25    }

 26    void print(char *first,char *second,char *third)
 27    {
 28        strcat(first,"   ");
 29        strcat(first,get(0));
 30        strcat(first,"   ");
 31        strcat(second,get(3));
 32        strcat(second," ");
 33        strcat(second,id);
 34        strcat(second," ");
 35        strcat(second,get(1));
 36        strcat(second," ");
 37        strcat(third,"   ");
 38        strcat(third,get(2));
 39        strcat(third,"   ");
 40    }

 41}
data[9];
 42piece ans[9];
 43bool used[9];
 44inline bool match(char *a,char *b)
 45{
 46    return a[0]==b[0]&&(a[1]=='L'&&b[1]=='R'||a[1]=='R'&&b[1]=='L');
 47}

 48bool search(int pos)
 49{
 50    if(pos==9return true;
 51    else
 52    {
 53        switch(pos)
 54        {
 55        case 0:
 56            for(int i=0;i<9;i++)
 57                if(!used[i])
 58                {
 59                     ans[pos]=data[i];
 60                     used[i]=true;
 61                     if(search(pos+1)) return true;
 62                     used[i]=false;
 63                }

 64            break;
 65        case 1:
 66            for(int i=0;i<9;i++)
 67               if(!used[i])
 68                {
 69                    ans[pos]=data[i];
 70                    used[i]=true;
 71                    for(int j=0;j<4;j++)
 72                    {
 73                        if(match(ans[pos].get(2),ans[0].get(0))&&search(pos+1)) return true;
 74                        ans[pos].TurnRight();
 75                    }

 76                    used[i]=false;
 77                }

 78            break;
 79        case 2:
 80            for(int i=0;i<9;i++)
 81                if(!used[i])
 82                {
 83                    ans[pos]=data[i];
 84                    used[i]=true;
 85                    for(int j=0;j<4;j++)
 86                    {
 87                        if(match(ans[pos].get(3),ans[0].get(1))&&search(pos+1)) return true;
 88                        ans[pos].TurnRight();
 89                    }

 90                    used[i]=false;
 91                }

 92            break;
 93        case 3:
 94            for(int i=0;i<9;i++)
 95                if(!used[i])
 96                {
 97                    ans[pos]=data[i];
 98                    used[i]=true;
 99                    for(int j=0;j<4;j++)
100                    {
101                        if(match(ans[pos].get(0),ans[0].get(2))&&search(pos+1)) return true;
102                        ans[pos].TurnRight();
103                    }

104                    used[i]=false;
105                }

106            break;
107        case 4:
108            for(int i=0;i<9;i++)
109                if(!used[i])
110                {
111                    ans[pos]=data[i];
112                    used[i]=true;
113                    for(int j=0;j<4;j++)
114                    {
115                        if(match(ans[pos].get(1),ans[0].get(3))&&search(pos+1)) return true;
116                        ans[pos].TurnRight();
117                    }

118                    used[i]=false;
119                }

120            break;
121        case 5:
122            for(int i=0;i<9;i++)
123                if(!used[i])
124                {
125                    ans[pos]=data[i];
126                    used[i]=true;
127                    for(int j=0;j<4;j++)
128                    {
129                        if(match(ans[pos].get(1),ans[1].get(3))&&match(ans[pos].get(2),ans[4].get(0))&&search(pos+1)) return true;
130                        ans[pos].TurnRight();
131                    }

132                    used[i]=false;
133                }

134            break;
135        case 6:
136            for(int i=0;i<9;i++)
137                if(!used[i])
138                {
139                    ans[pos]=data[i];
140                    used[i]=true;
141                    for(int j=0;j<4;j++)
142                    {
143                        if(match(ans[pos].get(3),ans[1].get(1))&&match(ans[pos].get(2),ans[2].get(0))&&search(pos+1)) return true;
144                        ans[pos].TurnRight();
145                    }

146                    used[i]=false;
147                }

148            break;
149        case 7:
150            for(int i=0;i<9;i++)
151                if(!used[i])
152                {
153                    ans[pos]=data[i];
154                    used[i]=true;
155                    for(int j=0;j<4;j++)
156                    {
157                        if(match(ans[pos].get(0),ans[2].get(2))&&match(ans[pos].get(3),ans[3].get(1))&&search(pos+1)) return true;
158                        ans[pos].TurnRight();
159                    }

160                    used[i]=false;
161                }

162            break;
163        case 8:
164            for(int i=0;i<9;i++)
165                if(!used[i])
166                {
167                    ans[pos]=data[i];
168                    used[i]=true;
169                    for(int j=0;j<4;j++)
170                    {
171                        if(match(ans[pos].get(0),ans[4].get(2))&&match(ans[pos].get(1),ans[3].get(3))&&search(pos+1)) return true;
172                        ans[pos].TurnRight();
173                    }

174                    used[i]=false;
175                }

176            break;
177        }
;
178        return false;
179    }

180}

181int main()
182{
183    int id;
184    while(true)
185    {
186        scanf("%d",&id);
187        if(!id) break;
188        for(int i=0;i<9;i++)
189        {
190            scanf("%s",data[i].id);
191            data[i].start=0;
192            for(int j=0;j<4;j++)
193                scanf("%s",data[i].type[j]);
194        }

195        printf("%d:\n",id);
196        memset(used,false,sizeof(used));
197        switch(search(0))
198        {
199        case true:
200            {
201                char first[100],second[100],third[100];
202                first[0]=second[0]=third[0]='\0';
203                ans[5].print(first,second,third);
204                ans[1].print(first,second,third);
205                ans[6].print(first,second,third);
206                printf("%s\n%s\n%s\n\n",first,second,third);
207                first[0]=second[0]=third[0]='\0';
208                ans[4].print(first,second,third);
209                ans[0].print(first,second,third);
210                ans[2].print(first,second,third);
211                printf("%s\n%s\n%s\n\n",first,second,third);
212                first[0]=second[0]=third[0]='\0';
213                ans[8].print(first,second,third);
214                ans[3].print(first,second,third);
215                ans[7].print(first,second,third);
216                printf("%s\n%s\n%s\n\n",first,second,third);
217            }

218            break;
219        case false:
220            printf("No Solution\n\n");
221            break;
222        }
;
223    }

224    return 0;
225}

posted on 2011-01-18 23:07 yzhw 閱讀(473) 評論(0)  編輯 收藏 引用 所屬分類: search

<2011年1月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
303112345

導航

統計

公告

統計系統

留言簿(1)

隨筆分類(227)

文章分類(2)

OJ

最新隨筆

搜索

積分與排名

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久国产主播| 久久久久久穴| 亚洲精品一二| 久久精品日产第一区二区| 亚洲一区二区免费在线| 免费成人在线观看视频| 久久久久国产精品一区二区| 欧美日韩免费观看一区三区| 免费不卡亚洲欧美| 国产一区二区在线观看免费播放| 在线一区亚洲| 亚洲午夜成aⅴ人片| 欧美激情亚洲| 亚洲国产精品欧美一二99| 好吊色欧美一区二区三区视频| 亚洲一区二区成人| 香蕉成人久久| 国产精品入口日韩视频大尺度| 亚洲精品影院| 夜夜嗨网站十八久久| 欧美电影免费观看高清完整版| 欧美fxxxxxx另类| 亚洲高清免费| 欧美~级网站不卡| 欧美黄色aa电影| 亚洲免费观看在线观看| 欧美成人免费网| 亚洲激情二区| 亚洲色图综合久久| 欧美视频一区在线观看| 999亚洲国产精| 亚洲在线视频| 国产日韩精品一区二区三区在线 | 日韩视频免费在线| 亚洲尤物视频在线| 国产精品一区在线播放| 午夜电影亚洲| 久久婷婷亚洲| 亚洲欧洲在线观看| 欧美日本一道本在线视频| 99精品欧美一区二区三区| 亚洲欧美经典视频| 国内久久视频| 欧美黄污视频| 亚洲一区二区成人在线观看| 欧美在线高清视频| 亚洲国产三级在线| 欧美午夜精品久久久| 亚洲欧美国产77777| 久久亚洲国产成人| 夜夜嗨av一区二区三区网页| 国产精品久久97| 久久精品视频在线看| 欧美激情视频一区二区三区免费| 99riav久久精品riav| 国产精品视频久久久| 久久久欧美精品sm网站| 亚洲精品国产欧美| 久久gogo国模裸体人体| 亚洲黑丝一区二区| 国产精品成人免费视频 | 久久国内精品自在自线400部| 欧美高清视频| 欧美一级成年大片在线观看| 亚洲国产另类久久久精品极度| 国产精品v亚洲精品v日韩精品 | 欧美成人免费在线| 午夜精品久久久久久久久久久| 免费国产自线拍一欧美视频| 亚洲午夜成aⅴ人片| 韩国免费一区| 国产精品久久久久毛片大屁完整版| 久久精品视频在线看| av成人免费观看| 欧美激情久久久| 欧美专区亚洲专区| 中日韩男男gay无套| 樱花yy私人影院亚洲| 国产精品日日摸夜夜添夜夜av| 蘑菇福利视频一区播放| 久久成人资源| 亚洲一区国产精品| 亚洲欧洲一区二区天堂久久| 六月天综合网| 久久精品男女| 午夜精品久久久久久久99水蜜桃 | 亚洲国产精品电影| 国产欧美一级| 国产精品青草久久久久福利99| 欧美成人首页| 美国成人毛片| 久久久久综合网| 欧美亚洲一区二区在线| 亚洲午夜一区二区| 99国产精品久久久久老师| 国产伦精品一区二区三区视频孕妇| 蘑菇福利视频一区播放| 久久资源在线| 久久久999成人| 久久精品国产免费观看| 性感少妇一区| 香蕉精品999视频一区二区 | 欧美成人免费在线观看| 老巨人导航500精品| 久久全球大尺度高清视频| 久久精品国产亚洲aⅴ| 久久国产婷婷国产香蕉| 久久精精品视频| 久久精品麻豆| 久久精品久久综合| 巨胸喷奶水www久久久免费动漫| 久久亚洲国产精品日日av夜夜| 久久久国产一区二区| 久久香蕉国产线看观看av| 久久亚洲国产精品日日av夜夜| 久久综合久色欧美综合狠狠 | 欧美一区免费视频| 久久国产精品久久久久久| 久久久久久久网| 欧美成人精品在线| 欧美精品在线看| 国产精品国产三级国产aⅴ浪潮| 国产精品久久久久久亚洲调教| 国产精品亚洲综合色区韩国| 国产亚洲精品aa午夜观看| 黄色另类av| 日韩西西人体444www| 亚洲欧美激情视频在线观看一区二区三区| 亚洲一区制服诱惑| 久久9热精品视频| 欧美xxx在线观看| 亚洲黄色小视频| 亚洲天堂av图片| 久久久久综合网| 欧美日韩在线观看一区二区三区| 国产精品看片资源| 伊人成年综合电影网| av成人老司机| 久久精品30| 亚洲激情在线观看| 亚洲一区二区三区免费视频| 久久久99精品免费观看不卡| 欧美激情视频在线播放| 国产日韩精品在线观看| 亚洲国产精品久久久久| 亚洲男女自偷自拍图片另类| 美女精品在线| 在线亚洲高清视频| 久久久亚洲精品一区二区三区| 欧美日韩蜜桃| 1769国内精品视频在线播放| 亚洲自拍偷拍色片视频| 六月婷婷一区| 亚洲一区在线看| 欧美激情自拍| 亚洲成人在线| 欧美综合第一页| 一区二区三区福利| 欧美成人精品不卡视频在线观看| 国产精品午夜国产小视频| 亚洲精品少妇| 麻豆成人小视频| 亚洲欧美国产高清va在线播| 欧美激情亚洲自拍| 影音先锋另类| 久久久99免费视频| 中文在线不卡视频| 欧美日韩国产成人在线| 在线观看日韩av电影| 久久av一区二区三区| 一区二区三区欧美激情| 性高湖久久久久久久久| 最新中文字幕一区二区三区| 久久久久久有精品国产| 国产欧美综合在线| 亚洲专区在线| 99国产精品99久久久久久| 免费在线视频一区| 伊人激情综合| 久久久精彩视频| 性欧美办公室18xxxxhd| 国产精品午夜春色av| 亚洲女爱视频在线| 在线一区欧美| 欧美色图五月天| 国产精品99久久久久久久久久久久 | 欧美一级片久久久久久久| 欧美性猛片xxxx免费看久爱| 一区二区三区久久久| 亚洲国产99| 欧美精品情趣视频| 亚洲第一精品在线| 麻豆精品网站| 另类综合日韩欧美亚洲| 亚洲福利久久| 亚洲国产日韩综合一区| 欧美美女bb生活片| 亚洲视频电影图片偷拍一区| 夜夜嗨av色综合久久久综合网| 欧美日韩国产首页在线观看|