洛谷 P1259 黑白棋子的移動

2022-10-09 10:06:08 字數 846 閱讀 3050

題目鏈結 

遞迴+分治+打表(?)

這題....一上來讓我有點兒蒙啊....但其實就在於找規律,舉幾個例子自己動手寫一下就恍然大悟了。

比如這樣:(當然,題目條件是4<=n<=100)

只需要先將中間緊挨的黑白棋子和空格交換,再將最後兩個黑色棋子與空格交換就好啦!

之後就很歡快地去敲鍵盤了!結果全部wa掉。。。。。

然後才知道我畫的每個例子的最後四行都是錯的!因為空格('-')插在中間是不能看做為黑白相間的!

所以說,最後四行非常不友好,需要特判,直接打表就ok了。

拿n=5舉個栗子:

放ac** 

1 #include2

using

namespace

std;

3int n,x;//

有2n個棋子

4char ch[210];5

void pr(int x)//

輸出函式611

void chu()//

初始化12

20void move(int now,int to)//

換位21

24void imp(int x)//

骨幹函式important

2534

else

3541}42

intmain()

43

P1259 黑白棋子的移動

我們先分析一下樣例 ooooooo oooooo o oooooo o ooooo o o ooooo o o oooo o o o oooo o o o ooo o o o o ooo o o o o o o oo o o o o o o o o o o o o o o o o o 每兩行分一組的...

P1259 黑白棋子的移動

有2n個棋子 n 4 排成一行,開始為位置白子全部在左邊,黑子全部在右邊,如下圖為n 5的情況 移動棋子的規則是 每次必須同時移動相鄰的兩個棋子,顏色不限,可以左移也可以右移到空位上去,但不能調換兩個棋子的左右位置。每次移動必須跳過若干個棋子 不能平移 要求最後能移成黑白相間的一行棋子。如n 5時,...

P1259 黑白棋子的移動 遞迴

有2n個棋子 n 4 排成一行,開始為位置白子全部在左邊,黑子全部在右邊,如下圖為n 5的情況 移動棋子的規則是 每次必須同時移動相鄰的兩個棋子,顏色不限,可以左移也可以右移到空位上去,但不能調換兩個棋子的左右位置。每次移動必須跳過若干個棋子 不能平移 要求最後能移成黑白相間的一行棋子。如n 5時,...