writeln;
end.
输入 4 5 -10 -30 2 20
输出 20 2 -10 -30 5 4
完善程序
问题描述: n n方阵的每行每列都是自然数1..n的一个全排列,每行(列)无重复数字。
例: n=5时,
1 4 3 2 5
5 3 2 1 4
4 2 1 5 3
3 1 5 4 2
2 5 4 3 1
输入 n(>=2)和第一行数字(不检查错误),输出 一个满足要求的方阵。因为只是要求每行(列)无重复数字,第一行的每个数字,都四十五度斜向下写,写到行尽头就从行开头开始。
这样就不会重复。对于经过第y行,x列的直线,斜率k=1,设:y=x+b。代入坐标,得出:b=y-x,令y=1,取首行的数:x=y-b,x从1开始,到n,如果x为0或负数,则x=x+n,取出第一行的数。
程序只用一维数组,存第一行的数字。
program example2;
const
maxn=10000;
var
a:array[1..maxn] of integer;
x,y,n:integer;
function f(x,y:integer):integer;
var
b:integer;
begin
if x<=0 then
f:=a[x];
end;
begin
write('Enter n:'); readln(n);
if (n<2) or (n>maxn) then exit;
write('Enter first line:');
for x:=1 to n do read(a[x]);
writeln('Output:');
for x:=1 to n do write(a[x]:4);
writeln;
for y:=2 to n do
begin
for x:=1 to n do write(:4);
writeln;
end;
end.
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说公务员考试noip普及组初赛模拟试卷23(附答案)(2)在线全文阅读。
相关推荐: