黑白棋子的移动 ssl-1310
来源:互联网 发布:淘宝匿名买家采集器 编辑:程序博客网 时间:2024/05/16 12:56
题意:
有2n个棋子(n≥4)排成一行,开始为位置白子全部在左边,黑子全部在右边,如下图为n=5的情况: ○○○○○●●●●● 移动棋子的规则是:每次必须同时移动相邻的两个棋子,颜色不限,可以左移也可以右移到空位上去,但不能调换两个棋子的左右位置。每次移动必须跳过若干个棋子(不能平移),要求最后能移成黑白相间的一行棋子。如n=5时,成为: ○●○●○●○●○● 任务:编程打印出移动过程。
分析: 数组a[]用来作为棋子移动的场所,初始时,a[0]~a[n-1]存放白子(用字符o表示),a[n]~a[2*n-1]存放黑子(用字符*表示), a[2*n],a[2*n+1]为空位置(用字符—表示).运用分治算法。
var n,s,t:longint;
a:array[1..100] of char;procedure print;var i:longint;begin write('step',s:2,':'); for i:=1 to 2*n+2 do write(a[i]); writeln; inc(s);end;procedure init(n:longint);var i:longint;begin s:=0; t:=2*n+1; for i:=1 to n do a[i]:='o'; for i:=n+1 to 2*n do a[i]:='*'; a[2*n+1]:='-';a[2*n+2]:='-'; print;end;procedure yd(k:longint);var j:longint;begin for j:=0 to 1 do begin a[t+j]:=a[k+j];a[k+j]:='-';end; t:=k; print;end;procedure chessman(n:longint);var i,k:longint;begin if n=4 then begin yd(4); yd(8); yd(2); yd(7); yd(1); end else begin yd(n); yd(2*n-1); chessman(n-1); end;end;begin readln(n); init(n); chessman(n);end.
0 0
- 黑白棋子的移动 ssl-1310
- 黑白棋子的移动(normal) ssl 1310
- 黑白棋子的移动
- 黑白棋子的移动
- 黑白棋子的移动
- 黑白棋子的移动
- 黑白棋子的移动
- 黑白棋子的移动(normal) 1310
- 黑白棋子的移动(normal) 1310
- 黑白棋子的移动——深搜
- 【递归】洛谷 P1259 黑白棋子的移动
- 黑白棋子移动
- 黑白染色棋子
- 【华为机试题】黑白棋子的最大匹配度
- [创新杯] 七个黑白棋子 跳棋问题 ,怀念实验室里和老师摆弄棋子的校园生活.
- 进程管理-----黑白棋子之分
- 棋盘 围棋? 黑白棋子? 我忘记了
- 【CQOI 2006】移动棋子
- Java实现(09)——组合模式(Composite Pattern)
- 简单使用dropzpne.js,点击/拖拽上传多图与php的交互
- poj2446 Chessboard(图的建模+二部图匹配)
- iOS 9.3 to iOS 10.0 API Differences
- 项目优化应该从那几个方面进行
- 黑白棋子的移动 ssl-1310
- poj 1611_The Suspects_并查集
- 四大组件的启动过程
- Swift中数据类型
- 深入JVM-锁与并发
- java数组
- 黑白棋子的移动(normal) 1310
- Java学习路线
- html5 <canvas> 标签