三、三中的遊戲黑白棋
題目描述
黑白棋遊戲的棋盤由4×4方格陣列構成。棋盤的每一方格中放有1枚棋子,共有8枚白棋子和8枚黑棋子。這16枚棋子的每一種放置方案都構成乙個遊戲狀態。在棋盤上擁有1條公共邊的2個方格稱為相鄰方格。乙個方格最多可有4個相鄰方格。在玩黑白棋遊戲時,每一步可將任何2個相鄰方格中棋子互換位置。對於給定的初始遊戲狀態和目標遊戲狀態,程式設計計算從初始遊戲狀態變化到目標遊戲狀態的最短著棋序列。
輸入檔案共有8行。前四行是初始遊戲狀態,後四行是目標遊戲狀態。每行4個數分別表示該行放置的棋子顏色。「0」表示白棋;「1」表示黑棋。
輸出檔案的第一行是著棋步數n。接下來n行,每行4個數分別表示該步交換棋子的兩個相鄰方格的位置。例如,abcd表示將棋盤上(a,b)處的棋子與(c,d)處的棋子換位。輸入輸出樣例
1111
0000
1110
0010
1010
0101
1010
0101
4
1222
1424
3242
4344
一道bfs狀壓題
可以利用int的二進位制存圖
用tomap()和getnum()來進行數圖轉換
#include
using
namespace std;
int start,end,sum;
int a[5]
[5],b[5]
[5],vis[
65540];
int father[
65540
],f[
100000][
4];//f為答案陣列
int dx[4]
=;int dy[4]
=;struct ans ans[
100000];
queue<
int>q;
void
read()
}for
(int i=
1; i<=
4; i++)}
}int
getnum
(int a[5]
[5])
}return x;
}void
tomap
(int x,
int a[5]
[5])
}}}bool
judge
(int ox,
int oy,
int nx,
int ny)
else
}void
bfs()if
(deci==end)
//如果到達終點
return;}
if(flag)
swap
(a[ox]
[oy]
,a[nx]
[ny]);
}}}}
}void
work()
}int
main()
return0;
}
三中的一次普通比賽(四)
一 三中的路燈 南昌三中是一所百年名校,歷史悠久,秉承勤樸忠勇校訓,南昌三中校園風景優美,建築物別緻,有風雨球館,體育館,藝體樓,游泳館等多個漂亮建築物,但是為了響應節能的號召,現學校決定,將民德路上n盞路燈進行開關的調整,現學校決定,將派人將這n盞燈和這n盞燈的位置p i p i 均不相等,如果兩...
三中的一次普通比賽(五)
二 三中的遊戲拼一拼 給定乙個信封,最多隻允許貼上n張郵票,計算在給定k n k 15 種郵票的情況下 假定所有的郵票數量都足夠 如何設計郵票的面值,能得到最大值max,使在1至max之間的每乙個郵資值都能得到。例如,n 3,k 2,如果面值分別為1分 4分,則在1分 6分之間的每乙個郵資值都能得到...
日記 一次普通的專案發版經歷
2020.9.3 今天晚上,我們小組之前做的乙個專案要發版上線了。這個專案是乙個有關學習任務的專案,管理員可以增刪改查學習任務 新增學員等 對應的伺服器也分為兩個部分,乙個後台伺服器組,乙個前台伺服器組。之前,我們已經在測試伺服器上測試了相關功能,今天準備將 發版到準生產 生產的伺服器。17 00,...