ssl 1661
洛谷 p2404 自然數的拆分問題
題目說明
任何乙個大於1的自然數總可以拆分成若干個自然數之和。
例: 1:4=1+1+1+1
2:4=1+1+2
3:4=1+3
4:4=2+2
5:4=4
var
n,l,m,x:longint;
a:array[1..10000000]of longint;
procedure
print;
var i:longint;
begin
write(l,':',n,'=');
for i:=1
to n do
if a[i+1]<>0
then
begin
write(a[i],'+');
endelse
break;
writeln(a[i]);
end;
procedure
search
(k:longint);
var i:longint;
begin
if k=0
then
begin inc(l);print;exit; end
else
for i:=1
to k do
if i>=x then
begin
inc(m);
a[m]:=i;
x:=i;
search(k-i);
x:=i-1;
a[m]:=0;
dec(m);
end;
end;
begin
readln(n);
search(n);
end.
搜尋解,每搜尋一次便減去n的值,值為0則列印一行。
就這樣,簡單粗暴!
回溯遞迴 自然數的拆分
題目 自然數的拆分 任何乙個大於1的自然數n,總可以拆分成若干個小於n的自然數之和。當n 7共14種拆分方法 7 1 1 1 1 1 1 1 7 1 1 1 1 1 2 7 1 1 1 1 3 7 1 1 1 2 2 7 1 1 1 4 7 1 1 2 3 7 1 1 5 7 1 2 2 2 7 1...
自然數拆分
描述 description 輸入自然數n,然後將其拆分成由若干數相加的形式,參與加法運算的數可以重複。輸入格式 inputformat 輸入只有乙個整數n,表示待拆分的自然數n。n 80 輸出格式 outputformat 輸出乙個數,即所有方案數 樣例輸入 sampleinput 複製資料 7 ...
自然數拆分
問題描述 自然數的拆分 任何乙個大於1的自然數n,總可以拆分成若干個自然數之和,並且有多種拆分方法。試求 n的所有拆分。例如自然數5,可以有如下一些拆分方法 5 1 1 1 1 1 5 1 1 1 2 5 1 2 2 5 1 4 5 2 3 注意,本題中n拆分出來的數x的範圍是1 x整數劃分可以參考...