題目鏈結
遞迴+分治+打表(?)
這題....一上來讓我有點兒蒙啊....但其實就在於找規律,舉幾個例子自己動手寫一下就恍然大悟了。
比如這樣:(當然,題目條件是4<=n<=100)
只需要先將中間緊挨的黑白棋子和空格交換,再將最後兩個黑色棋子與空格交換就好啦!
之後就很歡快地去敲鍵盤了!結果全部wa掉。。。。。
然後才知道我畫的每個例子的最後四行都是錯的!因為空格('-')插在中間是不能看做為黑白相間的!
所以說,最後四行非常不友好,需要特判,直接打表就ok了。
拿n=5舉個栗子:
放ac**
1 #include2using
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時,...