题目描述
有 2n个棋子排成一行,开始为位置白子全部在左边,黑子全部在右边,如下图为 n=5 的情况:
○○○○○●●●●●
移动棋子的规则是:每次必须同时移动相邻的两个棋子,颜色不限,可以左移也可以右移到空位上去,但不能调换两个棋子的左右位置。每次移动必须跳过若干个棋子(不能平移),要求最后能移成黑白相间的一行棋子。如 n=5时,成为:
○●○●○●○●○●
任务:编程打印出移动过程。
输入格式
一个整数 n。
输出格式
若干行,表示初始状态和每次移动的状态,用"o"表示白子,"*"表示黑子,"-"表示空行。
输入样例
7
输出样例
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*
提示说明
4≤n≤100
#include <bits/stdc++.h>
using namespace std;
int n, st, sp;
char c[101];
void print(){
for(int i = 1; i <= 2 * n + 2; i++){
cout << c[i];
}
cout <<

这是一道关于黑白棋子移动的编程问题。初始状态下,2n个棋子,白子在左,黑子在右。目标是通过特定移动规则使棋盘最终达到黑白相间。规则是每次移动相邻的两个棋子,不改变颜色顺序,跳过若干个棋子。题目要求编程输出整个移动过程。输入包含一个整数n(4≤n≤100),输出为移动过程的棋盘状态。给出的示例中,当n=5时,棋盘最终达到黑白相间状态。
最低0.47元/天 解锁文章
665





