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

pku1224 PICTURE PUZZLE 拼圖游戲:回溯法

題目:

不用多解釋了吧,給出每個(gè)小塊,可以旋轉(zhuǎn),求一種拼圖方案

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

5

1

6

4

0

2

8

3

7


這種搜索題我喜歡用面向?qū)ο蟮姆椒▉韺懀芮宄煌忮e(cuò),代碼也很容易看懂。大家看代碼吧
代碼:
  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 閱讀(465) 評論(0)  編輯 收藏 引用 所屬分類: search

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

導(dǎo)航

統(tǒng)計(jì)

公告

統(tǒng)計(jì)系統(tǒng)

留言簿(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ⅴ视频| 亚洲一区二区三区精品动漫| 亚洲视频一二| 亚洲综合第一| 久久久女女女女999久久| 欧美怡红院视频一区二区三区| 亚洲欧美久久久| 亚洲视频网在线直播| 欧美在线一级视频| 欧美精品国产精品| 国产欧美日韩在线播放| 亚洲大胆在线| 一区二区不卡在线视频 午夜欧美不卡在 | 亚洲精品日产精品乱码不卡| 亚洲少妇最新在线视频| 久久精品一本| 欧美日韩伦理在线免费| 国产专区欧美专区| 亚洲午夜极品| 欧美高清视频一区二区三区在线观看 | 欧美精品粉嫩高潮一区二区 | 欧美久久成人| 国产午夜精品视频免费不卡69堂| 亚洲国产综合视频在线观看| 午夜精品国产精品大乳美女| 欧美1区2区3区| 亚洲欧洲av一区二区| 欧美护士18xxxxhd| 狠狠色狠狠色综合日日tαg| 亚洲一区二区精品在线观看| 欧美国产日韩一区二区三区| 欧美一区二区性| 欧美午夜宅男影院在线观看| 在线精品亚洲一区二区| 欧美亚洲一区三区| 一本色道久久综合狠狠躁篇的优点 | 一区二区免费看| 欧美成人免费va影院高清| 午夜激情一区| 国产精品美女久久久免费| 亚洲精品网站在线播放gif| 久久久另类综合| 午夜精品久久久久久久99樱桃 | 亚洲国产欧美一区| 久久久激情视频| 亚洲欧美韩国| 国产亚洲成av人在线观看导航| 亚洲女人天堂av| 一区二区高清视频在线观看| 欧美精品在线免费播放| 日韩视频一区二区三区在线播放| 免费亚洲视频| 美女黄毛**国产精品啪啪| 伊人成人开心激情综合网| 久久精品二区| 久久大综合网| 在线播放中文一区| 欧美二区在线| 欧美经典一区二区三区| 亚洲乱码国产乱码精品精| 最新日韩在线视频| 欧美v国产在线一区二区三区| …久久精品99久久香蕉国产 | 先锋影院在线亚洲| 亚洲女爱视频在线| 国产亚洲人成a一在线v站| 欧美在线免费视屏| 久久不射网站| 亚洲性视频网站| 午夜欧美不卡精品aaaaa| 国产毛片一区二区| 久久精品一区中文字幕| 久久噜噜噜精品国产亚洲综合| 亚洲高清av| 亚洲美女啪啪| 国产日韩欧美在线视频观看| 蜜桃久久av一区| 欧美国产国产综合| 亚洲伊人网站| 久久精品视频99| 99国产精品久久久久久久久久| 一区二区三区成人| 激情欧美一区二区三区| 亚洲国产成人在线播放| 国产精品va| 蜜乳av另类精品一区二区| 欧美日韩成人综合| 久久久久久9| 欧美日韩国产一区二区三区地区| 欧美一级在线播放| 欧美成人小视频| 久久国产综合精品| 欧美精品一区二区三区很污很色的 | 午夜精品亚洲| 亚洲精品网址在线观看| 午夜亚洲性色福利视频| 亚洲伦理久久| 久久九九免费视频| 亚洲一区三区电影在线观看| 久久国产主播| 午夜欧美大片免费观看| 欧美成人中文| 久久精品国产久精国产爱| 美女精品网站| 久久影音先锋| 国产精品久久久久毛片大屁完整版 | 久久免费高清视频| 亚洲一区www| 欧美国产成人在线| 免费在线观看日韩欧美| 国产精品成人一区二区网站软件| 欧美成年人视频网站| 国产三级精品在线不卡| 99精品视频一区| 亚洲电影天堂av| 久久成人免费| 久久福利影视| 国产精品成人免费视频| 亚洲青色在线| 在线日韩电影| 久久狠狠婷婷| 亚洲免费视频在线观看| 欧美极品在线播放| 亚洲国产99| 亚洲国内自拍| 亚洲视频axxx| 欧美精品尤物在线| 欧美激情一区三区| 黑人中文字幕一区二区三区| 亚洲欧美国产另类| 日韩视频免费大全中文字幕| 久久免费99精品久久久久久| 久久黄色小说| 国产日产高清欧美一区二区三区| 亚洲人成网在线播放| 亚洲国内在线| 欧美激情精品久久久久| 欧美成人一区二区三区| 国产一区二区三区电影在线观看| 在线视频日本亚洲性| 一本综合久久| 国产精品久久久久久久一区探花| 亚洲色诱最新| 久久精品国产免费观看| 黄色一区二区三区| 久久综合九色99| 免费成人在线视频网站| 亚洲高清不卡一区| 欧美精品v日韩精品v国产精品| 亚洲欧洲一区二区三区久久| 亚洲精品一区久久久久久| 欧美高清hd18日本| 亚洲美女在线国产| 欧美中文在线免费| 国产午夜精品麻豆| 欧美gay视频激情| 一本色道婷婷久久欧美| 午夜电影亚洲| 国产真实精品久久二三区| 久久精品99国产精品日本| 欧美黄免费看| 一区二区三区.www| 国产精品免费看久久久香蕉| 亚洲一区二区三区涩| 久久久精品动漫| 91久久久久久久久| 欧美日韩国产专区| 亚洲在线1234| 欧美二区乱c少妇| 亚洲美女精品久久| 国产人成精品一区二区三| 亚洲第一精品福利| 欧美小视频在线观看| 亚洲色诱最新| 欧美freesex8一10精品| 宅男精品视频| 尤物yw午夜国产精品视频| 欧美视频第二页| 欧美中文字幕在线| 亚洲午夜高清视频| 欧美成人精品h版在线观看| 一级日韩一区在线观看| 在线观看欧美日韩| 欧美日韩黄色一区二区| 欧美在线视频一区二区三区| 亚洲另类黄色| 欧美激情性爽国产精品17p| 欧美在线综合视频| 亚洲视频网在线直播| 欧美国产精品人人做人人爱| 亚洲欧美久久久| 亚洲午夜高清视频| 日韩视频免费在线| 亚洲精品欧洲精品| 亚洲国产高清在线| 激情综合网激情|