1 条题解
-
0
C++ :
#include<iostream> using namespace std; char c[101];//存放棋子 int sp;//存放--的起始位置 int st;//记录移动的总步骤 int n;//白旗的数量 //打印棋子 void print(){ int i; cout<<"step"<<st<<":"; for(i = 1;i <=2 * n + 2;i++){ cout<<c[i]; } cout<<endl; st++; } //初始化棋盘 void init(int n){ int i; st = 0; sp = 2 * n + 1;//-空格第一次所在的位置 //设置白子 for(i = 1;i <= n;i++){ c[i] = 'o'; } //设置黑子 for(i = n + 1;i <= 2 * n;i++){ c[i] = '*'; } c[2 * n + 1] = '-'; c[2 * n + 2] = '-'; print(); } //k表示需要移动的棋子的起始位置 void move(int k){ //空格放棋子 c[sp] = c[k]; c[sp + 1] = c[k + 1]; //棋子放空格 c[k] = '-'; c[k + 1] = '-'; //移动结束后,新的空格的位置就是原来棋子的位置 sp = k; print(); } //递归移动,剩余4个棋子特殊处理 void mv(int n){ int i,k; //只剩4个要特殊处理 if(n == 4){ move(4); move(8); move(2); move(7); move(1); } else{ move(n); move(2 * n - 1); //n的数量减少1 mv(n - 1); } } int main(){ cin>>n; init(n); mv(n); }
- 1
信息
- ID
- 2165
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者