三中的一次普通比賽(六)

2021-09-29 00:03:21 字數 1574 閱讀 6226

三、三中的遊戲黑白棋

題目描述

黑白棋遊戲的棋盤由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,...