亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

黑白棋游戲

2019-11-08 02:51:34
字體:
來源:轉載
供稿:網友

黑白棋游戲

Description

黑白棋游戲的棋盤是由4 * 4的方格陣列構成。棋盤的每一方格中放有1枚棋子,共有8枚白棋子和8枚黑棋子。這16枚棋子的每一種放置方案都構成一個游戲狀態。在棋盤上擁有1條公共邊的2個方格稱為相鄰方格。一個方格最多可有4個相鄰方格。在玩黑白棋游戲時,每一步可將任何2個相鄰方格中棋子互換位置。對于給定的初始游戲狀態和目標游戲狀態,編程計算從初始游戲狀態變化到目標游戲狀態的最短著棋序列。

Input

輸入共8行。前四行是初始游戲狀態,后四行是目標游戲狀態。每行四個數分別表示該行放置的棋子顏色?!?”表示白棋,“1”表示黑棋。

Output

輸出的第一行是著棋步數n。接下來n行,每行4個數分別表示該步交換棋子的兩個相鄰方格的位置。例如,abcd表示棋盤上(a,b)處的棋子與(c,d)處的棋子換位。

Sample Input

1111 0000 1110 0010 1010 0101 1010 0101

Sample Output

4 1222 1424 3242 4344

Hint

輸出的時候注意數據字典序的問題

Solution

狀態壓縮,bfs討論每一種情況,暴力搜索

Code

#include <cstdio>#include <queue>#include <iostream>#define LL long longusing namespace std;queue <int> bfs, ans;int be, e, x;int vis[(1 << 17)];int PRe[(1 << 20)][3];inline bool pd(int num, int x, int y) {  int a = num >> (16 - x) & 1, b = num >> (16 - y) & 1;  if (a != b) return 1; return 0;}inline int exchange1(int num, int x, int y) {  int a = num >> (16 - x) & 1, b = num >> (16 - y) & 1;  return num - (a << (16 - x)) - (b << (16 - y)) + (a << (16 - y)) + (b << (16 - x));}inline int exchange2(int x) {  if (x == 0 || x == 4 || x == 8 || x == 12) return 1;  if (x == 1 || x == 5 || x == 9 || x == 13) return 2;  if (x == 2 || x == 6 || x == 10 || x == 14) return 3;  if (x == 3 || x == 7 || x == 11 || x == 15) return 4;}inline int exchange3(int x) {  if (x == 0 || x == 1 || x == 2 || x == 3) return 1;  if (x == 4 || x == 5 || x == 6 || x == 7) return 2;  if (x == 8 || x == 9 || x == 10 || x == 11) return 3;  if (x == 12 || x == 13 || x == 14 || x == 15) return 4;}inline void print(int d) {  if (pre[d][0]) print(pre[d][0]);  if (pre[d][0]) printf("%d%d%d%d/n", exchange3(pre[d][1]), exchange2(pre[d][1]), exchange3(pre[d][2]), exchange2(pre[d][2]));}int main() {  for (int i = 0; i < 16; ++i) scanf("%1d", &x), be |= x, be <<= 1;  for (int i = 0; i < 16; ++i) scanf("%1d", &x), e |= x, e <<= 1;  bfs.push(be), ans.push(0);  vis[be] = 1;  do {    int temp = bfs.front();    int s = ans.front();    if (temp == e) break;    for (int i = 0; i < 15; ++i) {      if (i == 3 || i == 7 || i == 11) {	if (pd(temp, i, i + 4)) {	  x = exchange1(temp, i, i + 4);	  if (!vis[x]) {	    vis[x] = 1, bfs.push(x), ans.push(s + 1);	    pre[x][0] = temp, pre[x][1] = i, pre[x][2] = i + 4;	  }	}	continue;      }      if (i == 14 || i == 13 || i == 12) {	if (pd(temp, i, i + 1)){	  x = exchange1(temp, i, i + 1);	  if (!vis[x]) {	    vis[x] = 1, bfs.push(x), ans.push(s + 1);	    pre[x][0] = temp, pre[x][1] = i, pre[x][2] = i + 1;	  }	}	continue;      }      if (pd(temp, i, i + 4)) {	x = exchange1(temp, i, i + 4);	if (!vis[x]) {	  vis[x] = 1, bfs.push(x), ans.push(s + 1);	  pre[x][0] = temp, pre[x][1] = i, pre[x][2] = i + 4;	}      }      if (pd(temp, i, i + 1)) {	x = exchange1(temp, i, i + 1);	if (!vis[x]) {	  vis[x] = 1, bfs.push(x), ans.push(s + 1);	  pre[x][0] = temp, pre[x][1] = i, pre[x][2] = i + 1;	}      }    }    ans.pop(), bfs.pop();  }while(1);  int w = ans.front();  printf("%d/n", w);  print(e);  return 0;}

Summary

這道題調了一個下午,一開始是因為vis數組定以成了bool型,后面是因為搜索中一個變量引用錯誤


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产99视频在线观看| 日韩福利视频在线观看| 亚洲成人999| 精品久久久一区二区| 国产mv久久久| 国产精品自产拍高潮在线观看| 91精品视频在线播放| www.亚洲成人| 欧美性猛交xxxxx免费看| 欧美日韩国产丝袜美女| 国产精品第一区| 国产热re99久久6国产精品| 欧美性20hd另类| 欧美国产日韩一区二区三区| 国产精品一区二区三区久久| 欧美日韩在线观看视频小说| 国产精品成人观看视频国产奇米| 精品国产一区久久久| 亚洲国产精品久久久| 亚洲精品v欧美精品v日韩精品| 日韩男女性生活视频| 亚洲第一区在线| 亚洲欧美另类在线观看| 91精品国产自产在线观看永久| 亚洲成av人影院在线观看| 91精品国产91久久久久久| 亚洲国产99精品国自产| 亚洲精品小视频| 亚洲色图国产精品| 久久九九国产精品怡红院| 深夜福利一区二区| 日韩最新av在线| 成人激情视频在线观看| 国产日韩欧美另类| 97久久久免费福利网址| 美女性感视频久久久| 91理论片午午论夜理片久久| 日韩中文字幕精品| 亚洲国产精品久久| 久久久国产精品一区| 最近2019年日本中文免费字幕| 国产精品专区一| 久久久精品电影| 91在线播放国产| 欧美性猛交xxxx乱大交蜜桃| 国产成人激情小视频| 日韩经典一区二区三区| 欧美日韩精品国产| 欧美超级乱淫片喷水| 欧美日韩精品国产| 97久久伊人激情网| 精品亚洲va在线va天堂资源站| 亚洲欧美日韩直播| 久久久国产精彩视频美女艺术照福利| 2021国产精品视频| 中文字幕亚洲天堂| 国产日韩精品电影| 久久99久久久久久久噜噜| 久久婷婷国产麻豆91天堂| 欧美综合一区第一页| 欧美肥臀大乳一区二区免费视频| 亚洲精品美女视频| 亚洲免费一级电影| 亚洲va电影大全| 伊人男人综合视频网| 久久天天躁狠狠躁夜夜av| 久久成人18免费网站| 久久全球大尺度高清视频| 2019av中文字幕| 亚洲二区在线播放视频| 国产不卡一区二区在线播放| 精品久久久久久中文字幕大豆网| 欧美性猛交xxx| 日韩国产高清污视频在线观看| 亚洲国产成人久久综合| 欧美日韩福利视频| 亚洲香蕉在线观看| 国产精品影片在线观看| 国产精品吊钟奶在线| 国产精品中文在线| 色老头一区二区三区在线观看| 九九久久国产精品| 国产精品白丝jk喷水视频一区| 国产精品91久久久| 亚洲欧美变态国产另类| 欧美精品久久久久久久久| www.久久草.com| 久久五月天综合| 日韩av资源在线播放| 国产一区二区三区久久精品| 91亚洲精品久久久久久久久久久久| 91国产精品视频在线| 一区二区亚洲精品国产| 日韩电影中文 亚洲精品乱码| 欧美体内谢she精2性欧美| 亚洲国产小视频| 亚洲老头同性xxxxx| 亚洲在线观看视频| 欧美孕妇孕交黑巨大网站| 日韩免费观看高清| 日韩精品在线观看一区二区| 国产精品成人免费视频| 色系列之999| 久久综合网hezyo| 青青草原成人在线视频| 91在线色戒在线| 91日本在线观看| 亚洲第一中文字幕在线观看| 国产一区二区激情| 欧美影院在线播放| 国产日韩在线免费| 国产精品久久久久91| 日韩精品免费一线在线观看| 日韩精品免费在线视频| 欧美日韩国产麻豆| 亚洲欧美日韩中文在线| 成人黄色短视频在线观看| 色狠狠久久aa北条麻妃| 狠狠做深爱婷婷久久综合一区| 在线看日韩欧美| 欧美电影在线播放| 久久久这里只有精品视频| 日韩经典一区二区三区| 在线视频一区二区| 久久免费精品日本久久中文字幕| 亚洲精品影视在线观看| 亚洲国产精久久久久久久| 国产精品96久久久久久| 九九视频直播综合网| 久久免费成人精品视频| 日本视频久久久| 欧美日韩亚洲高清| 91系列在线播放| 日韩av影院在线观看| 激情久久av一区av二区av三区| 欧美性极品xxxx娇小| 日韩av在线网页| 琪琪第一精品导航| 亚洲天堂av高清| 欧美大片在线看免费观看| 日韩av在线资源| 午夜精品久久久久久久99黑人| 97碰在线观看| 国语自产精品视频在线看一大j8| 91丨九色丨国产在线| xxx成人少妇69| 亚洲欧美日韩综合| 久久精品中文字幕电影| 岛国av午夜精品| 黑人极品videos精品欧美裸| 神马久久桃色视频| 欧美成人激情视频免费观看| 欧美成人精品在线播放| 国产日韩中文字幕| 日韩中文字幕在线视频| 久久亚洲国产精品成人av秋霞| 成人日韩av在线| 欧美大秀在线观看| 欧美精品videos| 日韩网站在线观看| 欧美福利视频在线| 国产在线拍揄自揄视频不卡99| 一区二区三区久久精品| 欧美激情亚洲国产|