p1937.pas

来自「高手写的所有acm例程 在acm.zju.edu.cn 上的题目的例程」· PAS 代码 · 共 60 行

PAS
60
字号
PROGRAM p1937;

VAR
        n                       :Integer;
        ans                     :array[1..100,0..100]of Integer;
        temp                    :array[1..100]of Integer;

PROCEDURE Search(long,point:Integer);
var
        i                       :Integer;
begin
if long<ans[point][0] then
        begin
        for i:=1 to long do ans[point][i]:=temp[i];
        ans[point][0]:=long;
        end;

if long=ans[point][0] then
        begin
        for i:=long downto 1 do
                begin
                temp[long+1]:=point+temp[i];
                if (temp[long+1]>100)or(long=100) then continue
                        else Search(long+1,temp[long+1]);
                end;
        end;
end;

PROCEDURE MakeAns;
var
        i,j                     :Integer;
begin
for i:=1 to 100 do
        begin
        ans[i][0]:=i;
        for j:=1 to i do ans[i][j]:=j;
        end;

temp[1]:=1;
Search(1,1);
end;

PROCEDURE Print;
var
        i                       :Integer;
begin
write(ans[n][1]);
for i:=2 to ans[n][0] do write(' ',ans[n][i]);
writeln;
end;

BEGIN
MakeAns;
readln(n);
while (n>0) do
        begin
        print;
        readln(n);
        end;
END.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?