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. 展开
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. 展开
展开全部
就像扑克牌一样,相当于一副扑克牌,不过只有一种花色,共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数组放数就可以
当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数组放数就可以
展开全部
就像扑克牌一样,相当于一副扑克牌,不过只有一种花色,共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数组放数就可以.
当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数组放数就可以.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
约瑟夫
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询