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

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 閱讀(465) 評論(0)  編輯 收藏 引用 所屬分類: search

<2012年1月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
2930311234

導航

統計

公告

統計系統

留言簿(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>
            国产精品jizz在线观看美国| 欧美中文字幕在线视频| 99视频精品在线| 在线精品视频一区二区三四| 在线观看视频日韩| 亚洲激情在线播放| 一区二区三区日韩在线观看| 亚洲视频网在线直播| 亚洲色图自拍| 亚洲午夜久久久久久久久电影院| 一本一本a久久| 亚洲午夜精品久久| 久久久久免费观看| 亚洲国产精品欧美一二99| 久久精品72免费观看| 亚洲女同同性videoxma| 久久精品av麻豆的观看方式 | 久久精品99久久香蕉国产色戒 | 欧美一区二区三区电影在线观看| 性伦欧美刺激片在线观看| 久久免费视频网站| 欧美日韩黄视频| 国产日本亚洲高清| 亚洲国产精品综合| 午夜电影亚洲| 欧美国产精品一区| 午夜久久一区| 欧美激情aⅴ一区二区三区| 国产精品久久久久久久久免费樱桃 | 欧美日韩美女| 国内精品美女av在线播放| 99国产成+人+综合+亚洲欧美| 久久av在线| 日韩午夜在线视频| 久久夜色精品一区| 国产日韩欧美日韩| 亚洲一区二区三区高清| 欧美国产在线观看| 久久精品一二三| 国产精品视频网址| 亚洲深夜福利网站| 亚洲国产精品va在线看黑人| 欧美一区二区三区在线视频| 欧美色图天堂网| 亚洲激情中文1区| 久久先锋影音| 欧美大片在线看免费观看| 久久精品二区三区| 欧美二区在线看| 欧美三级日本三级少妇99| 亚洲国产精品久久久久秋霞不卡 | 性久久久久久| 欧美影片第一页| 欧美日韩亚洲91| 亚洲美女性视频| 免费影视亚洲| 欧美成人小视频| 欧美三区美女| 宅男66日本亚洲欧美视频 | 国产免费成人在线视频| 1769国产精品| 欧美激情亚洲国产| 欧美区高清在线| 一区二区三区黄色| 欧美一级欧美一级在线播放| 99re6热在线精品视频播放速度| 欧美专区18| 欧美—级a级欧美特级ar全黄| 影院欧美亚洲| 欧美国产日本韩| 美女性感视频久久久| 亚洲第一中文字幕| 亚洲国产精品一区在线观看不卡 | 久久精品91久久久久久再现| 国产精品一区二区久久| 久久久久久国产精品mv| 久久九九热re6这里有精品| 精品动漫3d一区二区三区| 免费看黄裸体一级大秀欧美| 欧美国产精品v| 亚洲一区二区三区精品动漫| 亚洲一区二区三区在线看 | 国产午夜精品久久| 欧美成人午夜免费视在线看片 | 一本色道久久综合亚洲精品小说 | 欧美四级电影网站| 亚洲在线视频网站| 亚洲女女做受ⅹxx高潮| 国产农村妇女精品一区二区| 欧美.日韩.国产.一区.二区| 欧美精品粉嫩高潮一区二区 | 亚洲精品久久久久久久久| 欧美人在线视频| 欧美在线观看视频一区二区| 久久久伊人欧美| 一区二区三区日韩欧美精品| 欧美一区二区三区免费观看 | 国产一区二区三区日韩| 极品尤物一区二区三区| 久久久精品五月天| 欧美日韩亚洲一区二区三区在线观看 | 老司机一区二区三区| 亚洲国产精彩中文乱码av在线播放 | 99热精品在线| 欧美一级片久久久久久久| 久久精品国产清自在天天线| 羞羞答答国产精品www一本| 国产精品男女猛烈高潮激情| 亚洲国产一区二区三区在线播 | 一区二区高清在线| 久久黄色小说| 久久国产精品毛片| 欧美国产精品一区| 亚洲男人第一av网站| 久久av一区| 99天天综合性| 久久成年人视频| 性xx色xx综合久久久xx| 免费成人av在线| 久久er99精品| 国产精品va| 亚洲精品久久久一区二区三区| 国产精品视频男人的天堂| 亚洲男女自偷自拍| 亚洲国产精品久久久久秋霞不卡 | 亚洲欧美日韩国产一区二区三区| 久久综合色8888| 欧美亚洲一级片| 国产精品第一页第二页第三页| 亚洲电影在线免费观看| 国产偷久久久精品专区| 亚洲一区二区影院| 亚洲免费精彩视频| 欧美xx视频| 亚洲第一精品影视| 国内精品一区二区三区| 性色一区二区| 久久国产精彩视频| 国产精品免费小视频| 亚洲一区二区三区在线看| 午夜精品www| 欧美日韩视频在线一区二区 | 99精品欧美一区二区三区 | 极品尤物av久久免费看| 久久精品免费播放| 噜噜噜久久亚洲精品国产品小说| 精品91在线| 免费日韩av片| 亚洲精品一区二区三区樱花| 一区二区三区日韩欧美| 国产精品美女| 久久国产精品99精品国产| 久热精品视频| 亚洲精品之草原avav久久| 欧美精品在线一区二区| 99热在这里有精品免费| 午夜视频久久久| 国内久久精品视频| 六月婷婷一区| 亚洲精品欧美极品| 午夜精品美女自拍福到在线| 国产一区二区三区免费不卡 | 久久亚洲精品网站| 亚洲精品久久久久| 亚洲欧美另类在线观看| 国产麻豆视频精品| 免费日韩视频| 亚洲午夜久久久久久尤物| 久久久久久久精| 亚洲区一区二| 国产精品日日摸夜夜摸av| 久久嫩草精品久久久久| 亚洲三级影院| 久久成人羞羞网站| 亚洲福利视频一区| 国产精品―色哟哟| 欧美电影免费观看网站| 午夜欧美精品| 亚洲精品麻豆| 久久久久久久久久久久久久一区| 亚洲精品一区二区在线| 国产久一道中文一区| 女人天堂亚洲aⅴ在线观看| 亚洲专区免费| 亚洲国产裸拍裸体视频在线观看乱了| 一本色道久久99精品综合| 亚洲国产日韩综合一区| 亚洲欧美成人综合| 91久久精品国产91性色tv| 国产精品试看| 欧美精品一区二区视频| 欧美一区二区视频在线| 亚洲精品久久久久久久久久久久久| 久久国产精品一区二区三区四区 | 欧美在线观看一二区| 日韩午夜在线观看视频| 激情成人在线视频| 欧美日韩在线视频观看| 欧美成人精品一区二区| 久久久7777|