用free pascal来编个程序求数串的原始排列,最好每部有分析前N个自然数排成一串:X1,X2,X3…..Xn,先取出x1,将x2,x3移到数串尾,再取出x4,将x5,x6,x7移到数串尾,…….类推直至取完.取出的序列恰好是:1,2,
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/04 22:35:24
![用free pascal来编个程序求数串的原始排列,最好每部有分析前N个自然数排成一串:X1,X2,X3…..Xn,先取出x1,将x2,x3移到数串尾,再取出x4,将x5,x6,x7移到数串尾,…….类推直至取完.取出的序列恰好是:1,2,](/uploads/image/z/1079865-9-5.jpg?t=%E7%94%A8free+pascal%E6%9D%A5%E7%BC%96%E4%B8%AA%E7%A8%8B%E5%BA%8F%E6%B1%82%E6%95%B0%E4%B8%B2%E7%9A%84%E5%8E%9F%E5%A7%8B%E6%8E%92%E5%88%97%2C%E6%9C%80%E5%A5%BD%E6%AF%8F%E9%83%A8%E6%9C%89%E5%88%86%E6%9E%90%E5%89%8DN%E4%B8%AA%E8%87%AA%E7%84%B6%E6%95%B0%E6%8E%92%E6%88%90%E4%B8%80%E4%B8%B2%3AX1%2CX2%2CX3%E2%80%A6..Xn%2C%E5%85%88%E5%8F%96%E5%87%BAx1%2C%E5%B0%86x2%2Cx3%E7%A7%BB%E5%88%B0%E6%95%B0%E4%B8%B2%E5%B0%BE%2C%E5%86%8D%E5%8F%96%E5%87%BAx4%2C%E5%B0%86x5%2Cx6%2Cx7%E7%A7%BB%E5%88%B0%E6%95%B0%E4%B8%B2%E5%B0%BE%2C%E2%80%A6%E2%80%A6.%E7%B1%BB%E6%8E%A8%E7%9B%B4%E8%87%B3%E5%8F%96%E5%AE%8C.%E5%8F%96%E5%87%BA%E7%9A%84%E5%BA%8F%E5%88%97%E6%81%B0%E5%A5%BD%E6%98%AF%3A1%2C2%2C)
用free pascal来编个程序求数串的原始排列,最好每部有分析前N个自然数排成一串:X1,X2,X3…..Xn,先取出x1,将x2,x3移到数串尾,再取出x4,将x5,x6,x7移到数串尾,…….类推直至取完.取出的序列恰好是:1,2,
用free pascal来编个程序求数串的原始排列,最好每部有分析
前N个自然数排成一串:X1,X2,X3…..Xn,先取出x1,将x2,x3移到数串尾,再取出x4,将x5,x6,x7移到数串尾,…….类推直至取完.取出的序列恰好是:1,2,3……n
要求输入N,求原来的数串的排列方式.
不要太多函数,看不懂
感谢回答的人,我天灵盖掀了,自己做出了,分享
var n,t,i,m,k,s:integer;
var a,b,c:array [1..n] of integer;
begin
readln(n); t:=0;
for i:=1 to n do
a[i]:=i;
repeat
inc(t);
a[1]:=b[t];
for i:= 2 to n do
a[i-1]:=a[i];
a[1]:=m; a[2]:=k;
for i:=3 to n do
a[i-2]:=a[i];
s:=0;
repeat
inc(s);
until a[s]=0;
a[s]:=m; a[s+1]:=k;
until t=n;
for i:=1 to n do
c[b[i]]:=i;
for i:=1 to n do
write(c[i],' ');
end.
用free pascal来编个程序求数串的原始排列,最好每部有分析前N个自然数排成一串:X1,X2,X3…..Xn,先取出x1,将x2,x3移到数串尾,再取出x4,将x5,x6,x7移到数串尾,…….类推直至取完.取出的序列恰好是:1,2,
楼主,真是服了你,问题都描述不清楚.原题是每次将取走数的后面两个数移到末尾,哪来的x7?!解决这个问题可以用双向链表,然后按取数的逆规则运作就行了.
program NumSort;
const
STEP = 2;
type
PRec = ^TRec;
TRec = record
data: Integer;
prev: PRec;
next: PRec;
end;
var
n, i: Integer;
head, tail, cur, p: PRec;
begin
Readln(n);
if n