自然數拆分

2022-03-05 18:14:02 字數 1522 閱讀 3610

題目:

給出sum、min、max和n四個正整數,請輸出所有將sum拆分為n個遞增的正整數(允許相等)之和,其中每個正整數k都滿足:min <= k <= max

在少俠的部落格

看到這道題

,就隨手做了下。該題與輸出n個數取m個數的所有組合類似,只不過限定了m個數的和以及取值範圍。可以先用貪心演算法構造乙個最小的組合,然後調整這個組合,得到下乙個組合。顯然應該從後往前找到乙個數字,該數增加1,再調整該數後面的數。這個數就是:從後往前第乙個與最後乙個數的差值大於1的數(因為,如果差值小等於1,無法調整後面的數得到乙個符合要求的組合)。

從後往前找到第乙個與最後乙個數差值大等於2的數,從該數開始調整

while(--

p >=

first &&*

p >

tt) 

if(p 

<

first) 

break;//

if (*p == tt && *last != *(last - 1))  

++*p; 

init(p +1

, last 

-p, ss -1

, *p, max);

}cout 

<<"\n

";}int

main()

自然數拆分

描述 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整數劃分可以參考...

自然數無序拆分

原 2018年12月09日 12 10 27 oneplus123 時間限制 1 sec 記憶體限制 128 mb 題目描述 美羊羊給喜羊羊和沸羊羊出了一道難題,說誰能先做出來,我就獎勵給他我自己做的一樣禮物。沸羊羊這下可樂了,於是馬上答應立刻做出來,喜羊羊見狀,當然也不甘示弱,向沸羊羊發起了挑戰。...