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 ...