program p4;
var
a,b:array[1..32]of integer;
i:integer;
procedure ssort(i,j:integer);
var
m,k,x:integer;
begin
if j - i >1 then begin
m:=(i+j) div 2;
ssort(i,m);
ssort(m+1,j);
k:=i;
for x:=i to m do
begin
b[k]:=a[x];b[k+1]:=a[m+x-i+1];
k:=k+2;
end;
for x:=i to j do a[x]:=b[x];
end;
end;
begin
for i:=1 to 16 do a[ i ]:=i;
ssort(1,16);
for i:=1 to 16 do write(a:3);
writeln;
end.
输出:
program no2;
const
d:array[0..3,1..4]of integer=((4,7,10,13),(1,8,11,14),(2,5,12,15),(3,6,9,16));
var
i,j,a,x,k,bj:integer;
y,u,v:real;
begin
for i:=1 to 4 do
begin
a:=3-i;bj:=0;
for j:=0 to 3 do
for k:=1 to 4 do
begin
x:=d[j,k];u:=(x+a)/4;v:=(x+trunc(u))/4;y:=4*(v-trunc(v));
if y<>j then begin k:=4;j:=3;bj:=1;end;
end;
if bj=0 then begin
write(‘U+(X’);
if a>0 then write(‘+’);
writeln(a,’)/4’);
end;
end;
end.
结果:
program no3;const a:array[1..10]of integer =(8,2,7,4,6,9,3,5,3,8);
type point=^nod; nod=record
w:integer;right,left:pointend;
var first,head:point;j,i,k:integer;
procedure hyt(d:integer;var p:point);begin
if p=nil then beginnew(p);
if k=1 then begin first:=p;k:=2;end;with p^ do begin w:=d;right:=nil;left:=nil end;
end else with p^ do if d>=w then hyt(d,right) else hyt(d,left);
end;procedure hyt1(p:point);
begin with p^ do
begin if left<>nil then hyt1(left);
write(w:4);if right<>nil then hyt1(right);
end;end;
begin i:=10; first:=nil;k:=1;
for j:=1 to i do hyt(a[j],first);hyt1(first);writeln
end.结果: