4006 自然數的拆分問題

2021-09-29 22:43:18 字數 853 閱讀 1019

time limit: 10 second

memory limit: 20 mb

任何乙個大於1的自然數n,總可以拆分成若干個小於n的自然數之和。

輸入檔案僅一行,輸入乙個自然數n(1≤n)。

輸出若干個數的加法式子(如下)。

要求每行的元素按序輸出,左邊的元素不大於右邊的元素,行末用換行結束。

7
1+1+1+1+1+1+1

1+1+1+1+1+2

1+1+1+1+3

1+1+1+2+2

1+1+1+4

1+1+2+3

1+1+5

1+2+2+2

1+2+4

1+3+3

1+62+2+3

2+53+4

【題解】

同樣是dfs,一直加就好。超過輸入的數字剪掉。

【**】

#include int n,sum = 0,a[32788],number = 0;

void input_data() //輸入資料

void search(int t) //dfs

a[++number] = t; //記錄下當前搜尋到的數字

for (int i = t;i <= n;i++) //從當前數字開始搜,題目要求左邊的數字不大於右邊的數字

search(i);

if (sum == n) //如果滿足了n的要求,就輸出算式

number--; //回溯搜尋這個數字之前的狀態。

sum-=t;

}void get_ans()

int main()

4006 自然數的拆分問題

time limit 10 second memory limit 20 mb 任何乙個大於1的自然數n,總可以拆分成若干個小於n的自然數之和。輸入檔案僅一行,輸入乙個自然數n 1 n 輸出若干個數的加法式子 如下 要求每行的元素按序輸出,左邊的元素不大於右邊的元素,行末用換行結束。71 1 1 1...

自然數的拆分問題

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

自然數拆分

描述 description 輸入自然數n,然後將其拆分成由若干數相加的形式,參與加法運算的數可以重複。輸入格式 inputformat 輸入只有乙個整數n,表示待拆分的自然數n。n 80 輸出格式 outputformat 輸出乙個數,即所有方案數 樣例輸入 sampleinput 複製資料 7 ...