計蒜客 T1248 自然數的拆分 簡易dfs

2021-10-20 07:17:46 字數 860 閱讀 6537

這題其實不是很難,但是給我一下子整的有點懵!網上也沒有很清楚的解題(大概是)我就記下了,自認為我寫的題解很容易懂hahh

對於任意大於 111 的自然數 nnn,總是可以拆分成若干個小於 nnn 的自然數之和。

現請你編寫程式求出 nnn 的所有拆分。

輸入格式

輸入檔案共一行,包含乙個自然數,即要拆分的自然數 n

(1≤n≤20)n

(1 \le n \le 20)n

(1≤n≤20

)。輸出格式

輸出檔案有若干行,每行包含乙個等式,即代表一種可行的拆分(格式與順序參見樣例)。

輸出時每行末尾的多餘空格,不影響答案正確性

樣例輸入

5樣例輸出5=

1+1+

1+1+

15=1

+1+1

+25=

1+1+

35=1

+2+2

5=1+

45=2

+3

#include

#include

using

namespace std;

vectorint>

> res;

void

dfs(

int n, vector<

int> trace)

for(

int i=

1; i<=n; i++)}

intmain()

cout << res[i]

[sz]

<< endl;

}return0;

}

自然數拆分(計蒜客)

這題是一道遍歷 陣列的組合題。特點就是將可以組合的數存到陣列中,最後依次輸出其中的數。這題很用這種方法很巧,我一開始的想法是沒找到乙個就輸出乙個,但是那樣子沒法進行,因為如果某一條線路是錯的,最終無法得到那個數,之前的結果已經被輸出了。所以,這種用陣列保留結果的方法就很靈活。每次相加得得到得數將會保...

自然數的拆分問題

任何乙個大於1的自然數n,總可以拆分成若干個小於n的自然數之和。現在給你乙個自然數n,要求你求出n的拆分成一些數字的和。每個拆分後的序列中的數字從小到大排序。然後你需要輸出這些序列,其中字典序小的序列需要優先輸出。一本通的題 include include include using namespa...

2019 9 27 自然數的拆分

題目描述 給定乙個自然數n,要求把n拆分成若干個正整數相加的形式,參與加法運算的數可以重複。求拆分的方案數mod 2147483648的結果。1 n 4000。輸入乙個整數n。輸出輸出乙個數,即所有方案數 因為這個數可能非常大,所以你只要輸出這個數 mod 2147483648 的餘數即可。樣例輸入...