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

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在线观看h| 欧美日本韩国一区| 免费一级欧美片在线播放| 亚洲深爱激情| 欧美激情亚洲视频| 亚洲欧美另类国产| 国产日产欧美a一级在线| 一区在线视频观看| 国产亚洲在线观看| 国产精品久久久一区二区| 欧美日韩亚洲系列| 欧美伦理视频网站| 美女性感视频久久久| 国产精品一级久久久| 精品福利av| 在线视频免费在线观看一区二区| 欧美高清在线精品一区| 欧美国产一区视频在线观看| 久久国产精品久久久久久久久久| 中文精品在线| 久久夜色精品国产亚洲aⅴ| 久久中文字幕导航| 日韩亚洲一区二区| 午夜在线电影亚洲一区| 欧美一区二区啪啪| 久久久青草青青国产亚洲免观| 国产精品视频第一区| 亚洲人成在线观看网站高清| 亚洲在线视频一区| 久久影视精品| 亚洲天堂黄色| 欧美一区在线看| 亚洲经典三级| 免费精品99久久国产综合精品| 91久久嫩草影院一区二区| 亚洲欧美日韩另类精品一区二区三区| 久久国产视频网站| 欧美日韩在线播放三区四区| 欧美日韩一区二区三区在线 | 亚洲欧洲av一区二区| 欧美日韩在线视频一区二区| 亚洲美女色禁图| 久久久亚洲欧洲日产国码αv | 亚洲国产精品成人精品| 欧美一二三区精品| 国产精品青草久久久久福利99| 一区免费观看视频| 这里只有视频精品| 欧美日韩一区三区四区| 中文网丁香综合网| 亚洲精品国精品久久99热一| 亚洲在线观看免费| 欧美精品久久久久久久免费观看| 激情综合色丁香一区二区| 久久爱另类一区二区小说| 亚洲视频一二区| 欧美日韩国产小视频| 欧美不卡视频一区| 欧美天天综合网| 久久精品国产精品| 久久久国产91| 久久久久久久久久看片| 午夜视频一区二区| 亚洲图片欧美午夜| 欧美资源在线| av成人老司机| 国产精品99久久久久久有的能看| 欧美大片第1页| 久久人91精品久久久久久不卡| 久久欧美中文字幕| 亚洲伊人第一页| 香蕉免费一区二区三区在线观看| 国产裸体写真av一区二区| 亚洲国产清纯| 国产啪精品视频| 亚洲电影下载| 亚洲国产欧美一区二区三区同亚洲| 国产乱码精品| 欧美在线播放视频| 欧美另类69精品久久久久9999| 欧美高清视频一二三区| 国产一区二区三区在线播放免费观看 | 欧美另类综合| 欧美成人黄色小视频| 国内精品美女在线观看| 亚洲一区二区视频在线观看| 亚洲日本aⅴ片在线观看香蕉| 亚洲性感美女99在线| 亚洲国产91色在线| 在线国产精品一区| 亚洲尤物在线| 性欧美超级视频| 国产亚洲一区二区在线观看| 久久久久久欧美| 欧美成人激情视频免费观看| 亚洲人成人一区二区在线观看| 欧美高清视频免费观看| 亚洲深夜福利| 久久久久国产精品www| 国产麻豆9l精品三级站| 欧美一区观看| 久久福利影视| 亚洲人成人一区二区三区| 亚洲午夜精品久久| 国产欧美亚洲日本| 久热精品在线| 久久国产欧美| 亚洲精品免费在线播放| 香蕉乱码成人久久天堂爱免费| 国色天香一区二区| 国产精品久久午夜| 亚洲一二三区精品| 国产精品永久免费观看| 欧美电影在线播放| 欧美在线视频网站| 91久久国产综合久久| 小处雏高清一区二区三区| 久久国产日韩| 老色鬼精品视频在线观看播放| 欧美香蕉大胸在线视频观看| 中文一区在线| av成人免费在线观看| 亚洲麻豆国产自偷在线| 一本在线高清不卡dvd| 在线天堂一区av电影| 亚洲手机视频| 久久国产精彩视频| 久久先锋资源| 国产精品分类| 黄色成人精品网站| 99国产精品国产精品久久| 亚洲欧洲在线播放| 亚洲免费观看在线观看| 午夜老司机精品| 久久免费视频一区| 国产精品萝li| 国产欧美1区2区3区| 欧美一级片久久久久久久| 亚洲永久视频| 狠狠狠色丁香婷婷综合激情| a91a精品视频在线观看| 久久爱www.| 亚洲尤物在线视频观看| 亚洲国产成人在线| 欧美日韩一区不卡| 国产精品毛片在线看| 国产精品美女主播在线观看纯欲| 欧美午夜精品久久久久久人妖| 国产精品美女久久久久av超清| 欧美午夜一区二区| 亚洲精品国产精品乱码不99 | 久久黄色小说| 亚洲一区二区免费| 国产精品自拍三区| 日韩西西人体444www| 久久人人爽人人爽| 亚洲国产精品精华液2区45| 女女同性女同一区二区三区91| 国产精品一区免费观看| 亚洲欧美日韩国产综合在线 | 午夜国产精品视频| 欧美区日韩区| 黑人一区二区三区四区五区| 亚洲欧美日韩精品| 欧美激情视频网站| 久久久久久97三级| 亚洲精品久久久久久下一站| 美日韩在线观看| 久久综合一区二区| 国产伦精品一区二区三区在线观看| 亚洲少妇在线| 国产精品99久久久久久人| 国产精品久久97| 欧美一区二区三区免费观看 | 欧美日韩国产丝袜另类| 91久久精品网| 亚洲精品国精品久久99热一| 亚洲资源av| 亚洲高清三级视频| 91久久久久久久久| 国产精品欧美一区二区三区奶水 | 欧美—级a级欧美特级ar全黄| 亚洲日本黄色| 久久久久九九九| 亚洲国产精品一区在线观看不卡| 美脚丝袜一区二区三区在线观看| 欧美一级免费视频| 欧美日韩一卡| 久久久噜噜噜久久久| 麻豆av福利av久久av| 欧美自拍偷拍午夜视频| 亚洲深夜福利视频| 樱桃成人精品视频在线播放| 亚洲综合另类| 欧美在线关看|