position相对定位:可以把一个自然数分解成若干个自然数之和(help)

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/04 14:27:23
可以把一个自然数分解成若干个自然数之和
如N=3 有:3=1+1+1
=1+2
共2种分解方案(注:1+2与2+1算同一种分法)
输入 N,输出分解种数及具体方案.
如输入 N=3;
输出 TOTAL=2
请详细一点,什么是k什么是n呀!
最好用pascal编出来

组可算法 肯定 不行

搜索 枚举
program chaifen;
var
n,m,p,i:longint;
a:array[0..120]of integer;
procedure find(v:integer);
var
k:integer;
begin
for k:=a[v-1] to n div 2 do begin
n:=n-k; a[v]:=k;
find(v+1);
n:=n+k; end;
inc(m);
if v<>1 then begin
write(p,'=');
for i:=1 to v-1 do write(a[i],'+');
writeln(n); end;
end;
begin
readln(n);
a[0]:=1;
p:=n;
assign(output,'ChaiFen.txt');
rewrite(output);
find(1);
writeln('TOTAL=',m-1);
close(output);
end.

屏幕读入N

文件输出
输出目录为pascal运行文件夹
文件名称为ChaiFen.txt
输出格式:
列出所有等式 每行一个
输出Total=。。

速度远没有只输出Total快
N<60

组合算法,C(k,N)之和