pascal编程问题求助

典型的队列例子:1.我真看不懂它说什么意思,能形象的举例子,或者演示一下牌排放的过程吗?2.说一下变量的作用?例子:有n张牌,记为1,2,…,n,应当怎样排放,才能使:打... 典型的队列例子:
1.我真看不懂它说什么意思,能形象的举例子,或者演示一下牌排放的过程吗?
2.说一下变量的作用?
例子:
有n张牌,记为1,2,…,n,应当怎样排放,才能使:打开第一张是1,然后报两张依次放在末尾,打开上面一张,刚好是2,再依次打开上面一张,刚好是3;如此继续下去,直至打开最后一张是n。写一个程序解决这个问题。
代码:
Program lt7_2_1;
var a,b:array[1..1000]of integer;
i,j,t,h,n:integer;
begin
write('N=');readln(n);
for i:=1 to n do a[i]:=i;
a[1]:=1;h:=2;t:=n;b[1]:=1;
for i:=2 to n do
begin
for j:=1 to i do
begin
inc(t);a[t]:=a[h];inc(h);
end;
b[a[h]]:=i; inc(h);
end;
for i:=1 to n do
write(b[i]:5);
readln;
end.
展开
 我来答
yun202302
2013-08-16 · TA获得超过566个赞
知道小有建树答主
回答量:297
采纳率:0%
帮助的人:249万
展开全部
就像扑克牌一样,相当于一副扑克牌,不过只有一种花色,共N 张,编号依次为1,2...N。不过不是按顺序的,是杂乱的。要求的是一种顺序,按照所说的方法,得到的是从1到N的依顺序的扑克牌
当N=10时,所求得的顺序是:1,8,5,2,4,7,6,3,10,9
第一次先得到1,把8,5(2张)放到最后面,剩余的是:2,4,7,6,3,10,9,8,5
再得到2,把4,7,6(3张)放到最后面,剩余的是:3,10,9,8,5,4,7,6
再得到3,把10,9,8,5(4张)放到最后面,剩余的是:4,7,6,10,9,8,5
依次进行,直到取完所有的共N张扑克牌,得到的顺序就是从1到N
Program lt7_2_1;
var a,b:array[1..1000]of integer;
i,j,t,h,n:integer;
begin
write('N=');readln(n);
for i:=1 to n do a[i]:=i;//a存储一个顺序,包括取数和移数
a[1]:=1;h:=2;t:=n;b[1]:=1;//b为所求的序列,h表示下一个在a中表示的要移的数的位置(已经放数的位置是不能再移的),t表示这个位置要存在a中的哪个下标处
for i:=2 to n do//i为要取的数
begin
for j:=1 to i do//j表示要移的数,要想取到i,就要先移i个数的位置
begin
inc(t);a[t]:=a[h];inc(h);//移数
end;
b[a[h]]:=i; inc(h);//取数(也就是i应该在的位置在a[h]所标示的位置)
end;
for i:=1 to n do
write(b[i]:5);
readln;
end.
其实,可以不用a数组,只需用一个变量记下要放置数的位置,不过当这个位置大于N时,要转到前面来。求出这个位置,按从1到N的顺序在b数组放数就可以
wwldabhd
2013-08-20 · TA获得超过570个赞
知道答主
回答量:113
采纳率:0%
帮助的人:29.2万
展开全部
就像扑克牌一样,相当于一副扑克牌,不过只有一种花色,共N 张,编号依次为1,2...N。不过不是按顺序的,是杂乱的。要求的是一种顺序,按照所说的方法,得到的是从1到N的依顺序的扑克牌
当N=10时,所求得的顺序是:1,8,5,2,4,7,6,3,10,9
第一次先得到1,把8,5(2张)放到最后面,剩余的是:2,4,7,6,3,10,9,8,5
再得到2,把4,7,6(3张)放到最后面,剩余的是:3,10,9,8,5,4,7,6
再得到3,把10,9,8,5(4张)放到最后面,剩余的是:4,7,6,10,9,8,5
依次进行,直到取完所有的共N张扑克牌,得到的顺序就是从1到N
Program lt7_2_1;
var a,b:array[1..1000]of integer;
i,j,t,h,n:integer;
begin
write('N=');readln(n);
for i:=1 to n do a[i]:=i;//a存储一个顺序,包括取数和移数
a[1]:=1;h:=2;t:=n;b[1]:=1;//b为所求的序列,h表示下一个在a中表示的要移的数的位置(已经放数的位置是不能再移的),t表示这个位置要存在a中的哪个下标处
for i:=2 to n do//i为要取的数
begin
for j:=1 to i do//j表示要移的数,要想取到i,就要先移i个数的位置
begin
inc(t);a[t]:=a[h];inc(h);//移数
end;
b[a[h]]:=i; inc(h);//取数(也就是i应该在的位置在a[h]所标示的位置)
end;
for i:=1 to n do
write(b[i]:5);
readln;
end.
其实,可以不用a数组,只需用一个变量记下要放置数的位置,不过当这个位置大于N时,要转到前面来。求出这个位置,按从1到N的顺序在b数组放数就可以.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
2013julyxx
2013-08-23 · TA获得超过100个赞
知道答主
回答量:110
采纳率:0%
帮助的人:66.7万
展开全部

约瑟夫



已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式