鱼露的用法及用量:PASCAL的整数N的划分问题

来源:百度文库 编辑:高校问答 时间:2024/04/29 04:45:08
一个正整数N可以划分成若干个正整数的和的形式,例如5可以划分成以下几种形式:
5=1+1+1+1+1
5=1+1+1+2
5=1+1+3
5=1+2+2
5=1+4
5=2+3
5=5
其中划分出的若干个正整数严格不减,编一个程序,输入整数N,求出所有划分方案数。
记得是PASCAL的,最好有源程序。
不胜感激。

program npart;

const
max_n = 400;
var
a:array[1..max_n,1..max_n] of int64;
n,i,j:integer;
begin
write('input n: ');
readln(n);
a[1,1] := 1;
for i := 2 to n do
begin
a[i,i] := 1;
for j := i-1 downto 1 do
begin
if (j > i - j) then
a[i,j] := a[i,j+1]
else
a[i,j] := a[i,j+1] + a[i-j,j];
end;
end;
writeln(a[n,1]);
readln;
end.