60.(递推练习)黑白棋子
2016-03-11 18:38
218 查看
2230 黑白棋子[/b]
时间限制: 1s
空间限制:
32000 KB
题目等级 :
大师 Master
题解
查看运行结果
题目描述 Description
有2n个棋子(n≥4)排成一行,开始为位置白子全部在左边,黑子全部在右边,如下图为n=5的情况:
○○○○○●●●●●
移动棋子的规则是:每次必须同时移动相邻的两个棋子,颜色不限,可以左移也可以右移到空位上去,但不能调换两个棋子的左右位置。每次移动必须跳过若干个棋子(不能平移),要求最后能移成黑白相间的一行棋子。如n=5时,成为:
○●○●○●○●○●
任务:编程打印出移动过程。
输入描述 Input
Description
n
输出描述 Output
Description
编程打印出移动过程。
样例输入 Sample
Input
7
样例输出 Sample
Output
step
0:ooooooo*******--
step
1:oooooo--******o*
step
2:oooooo******--o*
step
3:ooooo--*****o*o*
step
4:ooooo*****--o*o*
step
5:oooo--****o*o*o*
step
6:oooo****--o*o*o*
step
7:ooo--***o*o*o*o*
step
8:ooo*o**--*o*o*o*
step
9:o--*o**oo*o*o*o*
step
10:o*o*o*--o*o*o*o*
step
11:--o*o*o*o*o*o*o*
数据范围及提示 Data Size &
Hint
n<20
代码:
#include
using
namespace std;
#include
#include
char
a[4][20]={"ooo*o**--*","o--*o**oo*","o*o*o*--o*","--o*o*o*o*"};
//最后四步是没有规律的,单独存下来,直接输出
int
n,step=0;
int
main()
{
cin>>n;
int
i=1;
while(i<=n-3)
{
if(step%2==0)
{
cout<<"step"<<setw(2)<<step<<":";//注意开始的step的格式是对齐两位输出
for(int j=1;j<=n-i+1;++j)
printf("o");
for(int j=1;j<=n-i+1;++j)
printf("*");
printf("--");
for(int j=1;j<=i-1;++j)
printf("o*");
printf("\n");
}
step++;
if(step%2==1)
{
cout<<"step"<<setw(2)<<step<<":";
for(int j=1;j<=n-i;j++)
printf("o");
printf("--");
for(int j=1;j<=n-i;j++)
printf("*");
for(int j=1;j<=i;++j)
printf("o*");
printf("\n");
}
i++;
step++;
}
cout<<"step"<<setw(2)<<step<<":";//最后四步是没有规律的,单独存下来,直接输出
printf("%s",a[0]);
for(int
j=1;j<=n-4;++j)
printf("o*");
printf("\n");
step++;
cout<<"step"<<setw(2)<<step<<":";
printf("%s",a[1]);
for(int
j=1;j<=n-4;++j)
printf("o*");
printf("\n");
step++;
cout<<"step"<<setw(2)<<step<<":";
printf("%s",a[2]);
for(int
j=1;j<=n-4;++j)
printf("o*");
printf("\n");
step++;
cout<<"step"<<setw(2)<<step<<":";
printf("%s",a[3]);
for(int
j=1;j<=n-4;++j)
printf("o*");
printf("\n");
step++;
return
0;
}
相关文章推荐
- 60.(递推练习)黑白棋子
- li浮动引起ul高度坍陷的解决方法
- java中的Timestamp
- poj2484--A Funny♂Game
- Python之函数篇
- jersey服务端简单小示例
- 线程安全的单例模式的几种实现方法分享
- 个人感受
- Netcat使用方法
- XWiki安装(war包方式)
- Example rebuttal for "YOLO: Real-Time Object Detection"
- C++两个有序数组合并
- UNITY3D shader代码例子<三> shader旋转动画
- Java常见几种排序方式
- spring,mybatis事务管理配置与@Transactional注解使用[转]
- 天圆地方· 围棋界的盲棋天才 -- 鲍云
- poj2425--A Chess Game
- linux硬链接和软链接以及inode
- Web Workers处理线程
- 中药-养生