【2016.10.6NOIP普及模拟】Pond
来源:互联网 发布:一辈子单身感受知乎 编辑:程序博客网 时间:2024/06/05 04:55
题目描述:
G最后在规定时间内完成了任务,Alice只能放行。出了房间,G的左边是一条继续前进的道路,右边是一个池塘。池塘中有序的排列着一排数量相同石块和荷叶。正在G准备向左走继续前进的时候,D和Z爬完了楼梯,出现在了池塘的另一边。D和Z可以踩着石块通过池塘,并且每步可以跨两个单位长度(假定相邻两个物体之间的距离为一个单位长度)。当前池塘中荷叶与石块的排列如下:(字母X为荷叶,O为石块)
XXXXXOOOOO
显而易见,D和Z是无法通过池塘的。正在她们一筹莫展的时候,G在岸边发现了一个机关。机关中的黑色白色石子分别代表石块和荷叶,移动石子便能够移动相应的石块与荷叶。移动规则如下:石子靠右排列,左侧有两个空位,每次操作可以将相邻的任意两个石子移动到空位上,但左右位置不可交换。由于G刚才搬完皇后石像,身心疲惫,她希望你帮她找到移动石子的步骤,使得D和Z可以踩着石头通过池塘。当然,时间紧迫,步骤越少越好。
输入:
一个整数n(4≤n≤30),表示石块和荷叶的数量。
输出
输出移动步骤。
其中第一行为初始状态,从左到右一次为n个荷叶,n个石块,2个空位。
最后一行为末状态,规定末状态是2个空位在最左侧。
大写字母X表示荷叶,大写字母O表示石块,下划线_表示空位。
样例输入
6
样例输出
XXXXXXOOOOOO__
XXXXX__OOOOOXO
XXXXXOOOOO__XO
XXXX__OOOOXOXO
XXXXOOOO__XOXO
XXX__OOOXOXOXO
XXXOXOO__OXOXO
X__OXOOXXOXOXO
XOXOXO__XOXOXO
__XOXOXOXOXOXO
题解:
什么时候水题也有这么多字了?mdzz,明知道我有密集恐惧症,还把题目描写的辣么“清楚”,表示比赛的时候根本不想看啊!其实这道题说白了就是三个字——找规律。其实每一个输出都有n*2-2行,这样子我们就可以按照规律输出。但还有特殊情况的话,就只能自己慢慢算了!
#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>using namespace std;char a[62];int m,n;int l=0;int main(){ freopen("pond.in","r",stdin); freopen("pond.out","w",stdout); scanf("%d",&n); for (int i=1;i<=n;i++) { a[i]='X'; printf("%c",a[i]); } for (int i=n+1;i<=n*2;i++) { a[i]='O'; printf("%c",a[i]); } a[n*2+1]='_'; a[n*2+2]='_'; printf("__\n"); l=n*2+2; m=n; while (n>3) { a[n*2+1]=a[n]; a[n*2+2]=a[n+1]; a[n]='_'; a[n+1]='_'; for (int i=1;i<=l;i++) printf("%c",a[i]); printf("\n"); if (n>4) { a[n]=a[n*2-1]; a[n+1]=a[n*2]; a[n*2-1]='_'; a[n*2]='_'; for (int i=1;i<=l;i++) printf("%c",a[i]); printf("\n"); } n--; } a[5]=a[9]; a[4]=a[8]; a[9]='_'; a[8]='_'; for (int i=1;i<=l;i++) printf("%c",a[i]); printf("\n"); a[9]=a[3]; a[8]=a[2]; a[3]='_'; a[2]='_'; for (int i=1;i<=l;i++) printf("%c",a[i]); printf("\n"); a[3]=a[8]; a[2]=a[7]; a[8]='_'; a[7]='_'; for (int i=1;i<=l;i++) printf("%c",a[i]); printf("\n"); a[8]=a[2]; a[7]=a[1]; a[2]='_'; a[1]='_'; for (int i=1;i<=l;i++) printf("%c",a[i]); printf("\n");}
- 【2016.10.6NOIP普及模拟】Pond
- 【2016.10.6NOIP普及模拟】Pond
- 【2016.10.6NOIP普及模拟】Stairs
- 【2016.10.6NOIP普及模拟】Queen
- 【2016.10.6NOIP普及模拟】Power
- 【2016.10.4NOIP普及模拟】Bill
- 【2016.10.4NOIP普及模拟】Exam
- 2062. 【2016.10.4NOIP普及模拟】Bill
- 2064. 【2016.10.4NOIP普及模拟】Note
- 2063. 【2016.10.4NOIP普及模拟】Exam
- 【2016.10.5NOIP普及模拟】zy送画
- 【2016.10.7NOIP普及模拟】找试场
- 【2016.10.7NOIP普及模拟】幂运算
- 【2016.10.7NOIP普及模拟】箱子嵌套
- 【NOIP普及组模拟】采药
- 【2016.10.5NOIP普及模拟】zy的秘密
- 【2016.10.5NOIP普及模拟】wd的假日
- 2016.10.05【初中部 NOIP普及组 】模拟赛
- 单例模式
- java中的回调函数
- 网络爬虫技术总结
- 【Cocos2d-x】pthread库的使用
- Codeforces 701D. As Fast As Possible(二分)
- 【2016.10.6NOIP普及模拟】Pond
- 图像缩放之双三次插值法
- Android_悬浮效果
- 编译Android出错:Unable to execute dex: Java heap space
- JVM及垃圾回收机制
- HDU 3018 Ant Trip 欧拉路 并查集
- 洛谷P3403 跳楼机 (spfa+图论)
- 动手解决Maven在offline模式中无法使用的BUG
- Android中常见的热门标签的流式布局的实现