编程高手来看看这道题

有n对围棋子(4≤n≤30)排成一行,开始位置为白子全部在左边,黑子全部在右边:如下图,其中O表示白子,*表示黑子:
OOOOO*****
按如下规则移动棋子:每次必须同时移动相邻的两个棋子,颜色不限,可以左移也可以右移。移动时,必须跳过若干个棋子,最后应成为下图:
O*O*O*O*O*

每次必须同时移动相邻的两个棋子,颜色不限,可以左移也可以右移。移动时,必须跳过若干个棋子.
那同时移动2个白圈,移动2次不就成了?(不知题目是这意思不?)
program tu;
var a:array[1..60] of char;
i,n,x,y:integer;
procedure change(j,k:integer);
var p:integer;q:char;
begin
q:=a[j];
for p:=j to k-1 do
a[p]:=a[p+1];
a[k]:=q;
end;

begin
readln(n);
for i:=1 to n do a[i]:='o';
for i:=n+1 to 2*n do a[i]:='*';
x:=n; y:=2*n-1;
repeat
change(x,y);
x:=x-1; y:=y-2;
until x=1;
for i:=1 to 2*n do write(a[i]);
end.
运行时,输入N,回车就有解了N<=30
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-10-20
ZHEG WE\FLPS RTEDS R HYJ AF ASC RG F MFOIAR J JAOI R9 MFIDL M
hrio nso ;jmsfoij mg odsl afjm jfopr m0 fdma fm9dso
NU9FIMS NUJMF WTK MP -0[ JFSP irk op
hujrl jf kjf0-wpf mv -0s

一道C语言编程问题,高手们来看看帮忙解答下
先推算公式,C^2*(A^2+B^2),= (A^2*B^2),程序就是找寻能让公式左右相等的ABC的值,且0<c<b<a<100.include <stdio.h> int main(){ int a;\/\/定义循环变量。int b;int c;int sum;\/\/ABC之和。for (a = 100;a > 0;a--)\/\/以A为循环变量,在1到100之间。{ for (b = ...

会c#编程的高手,帮忙看一下这道题目。。谢了
public string RetrunPic(int x){ int p1=0;int p2=0;int p3=0;int p4=0;int p5=0;int p6=0;int p7=0;int p8=0;if(x\/200!=0){p1=x\/200;x=x%200;} if(x\/100!=0){p2=x\/100;x=x%100;} if(x\/50!=0){p3=x\/50;x=x%50;} if(x\/20!=0){p4=x\/20;x=x%20;...

c语言编程高手来帮我看看,百钱买百鸡问题~
第一个问题:c=100-a-b是一个赋值语句,把表达式100-a-b的值赋予变量c;如果写成a+b+c=100的话,同样也是一个赋值语句,不过编译会出现语法错误,因为无法把100赋值给a+b+c。第二个问题:一个=是赋值运算符,==是相等比较运算符,你需要进行什么样的运算就必须使用相应的运算符。第三个问题:...

C++编程题(高手请进)
1、某航空公司规定在旅游的旺季7~9月份,如果订票数超过20张,票价优惠15%,20张以下,优惠5%;在旅游的淡季1~5月份、10月份、11月份,如果订票数超过20张,票价优惠30%,20张以下,优惠20%;其他情况一律优惠10%设计程序,根据月份和订票张数决定票价的优惠率。include<iostream.h> void main(){...

编程高手瞧瞧,此题填入0至8成算式,求全解.
47个(0-8)2708÷1354=2 2870÷1435=2 3456÷1728=2 3528÷1764=2 3564÷1782=2 3654÷1827=2 3704÷1852=2 4156÷2078=2 4356÷2178=2 4370÷2185=2 4716÷2358=2 5034÷1678=3 5208÷1736=3 5238÷1746=3 5304÷1768=3 5346÷1782=3 5416÷2708=2 5436÷2718=2 5472÷1368=4 561...

请问编程高手:关于a++与++a的问题
这是一个前加加与后加加的问题。结果是:a=5,b=15 因为a初始值等于3,a++是后加加,所以a等于3.++a,是前加加、上面那个a后加加以后是等于4,所以前加加以后a就等于5;b=a++*++a;这是运算符的优先级造成的,相当于b=(a++)*(++a),所以b=3*5;用事实来证明一切吧!using System;nam...

请Python编程高手帮我解答这个问题
1、没有使用循环对整个列表进行处理,使得只是处理了第二个元素。按照原程序的思路,if num < len(my_list):应该改成 while num < len(my_list):2、如果改为使用while语句,原程序对列表元素的处理算法存在逻辑错误:因为循环到一个大写字母后,会在原位置插入空格,再次循环后,会对空格进行处理;...

采用matlab编程:曲线运动。高手请指教!!!
小孩和玩具的问题 题目. 一个小孩借助长度为a的硬棒,拉或推某玩具.此小孩沿某曲线行走,计算并画出玩具的轨迹.图 1 A B C 图 2 解:假设小孩拉的玩具如图1所示,由于整个推拉过程中(图2),玩具走的轨迹,只与C在地面上的投影点B的轨迹有关。所以我们把模型简化为图3。A a 图 3 假设...

计算机C语言编程问题 高手来 回答好了加分
printf("%d\\n",a[___]);} \/\/int a[4];\/\/int * p = a;这是在变量的声明时,就相当于p=a;而不是*p=a;不要误解了int *。p=a;那么*p = *a;而*a = a[0];也就是说*p = a[0];那行程序相当于:for(i=0 ; i<4 ; i++) a[i]=++a[0];\/\/你应该好好区分一...

c++编程题,高手们进来帮帮忙哈
你的思路不对,这题的正解的确是贪心,但是不是你这么贪心法的,因为你选取长度最小的n-1条边,不一定能够把所有村庄连接起来,例如有1234四个村庄,你用3条公路1-2,2-3,3-1将123连接起来而不管4,显然是不对的 这是典型的最小生成树的题目,在你的代码上改动其实很方便,只要实现一个并查集...

相似回答