描述 Description
输入自然数n,然后将其拆分成由若干数相加的形式,参与加法运算的数可以重复。
输入格式 Input Format
输入只有一个整数n,表示待拆分的自然数n。 n<=80
输出格式 Output Format
输出一个数,即所有方案数
样例输入 Sample Input
7
样例输出 Sample Output
14
=======
简单搜索
只用下一个状态拆分的数大于前一状态拆分的数,就可以避免重复情况
======================================================
var
n:longint;
ans:longint;
procedure init;
begin
assign(input,'p1171.in');
assign(output,'p1171.out');
reset(input); rewrite(output);
end;
procedure terminate;
begin
close(input); close(output); halt;
end;
procedure dfs(s,t:longint);
var
i:longint;
begin
if s=0 then begin inc(ans); exit; end;
for i:=t to s do
begin
dfs(s-i,i);
end;
end;
procedure main;
var
i:longint;
begin
readln(n);
ans:=0;
for i:=1 to n div 2 do
dfs(n-i,i);
writeln(ans);
end;
begin
init;
main;
terminate;
end.