自然數拆分

2021-06-20 21:08:32 字數 2345 閱讀 9588

描述 description 輸入自然數n,然後將其拆分成由若干數相加的形式,參與加法運算的數可以重複。

輸入格式 inputformat 輸入只有乙個整數n,表示待拆分的自然數n。 n<=80

輸出格式 outputformat 輸出乙個數,即所有方案數

樣例輸入 sampleinput [複製資料]

7

樣例輸出 sampleoutput [複製資料]

14

資料範圍和注釋 hint 解釋:

輸入7,則7拆分的結果是

7=1+6

7=1+1+5

7=1+1+1+4

7=1+1+1+1+3

7=1+1+1+1+1+2

7=1+1+1+1+1+1+1

7=1+1+1+2+2

7=1+1+2+3

7=1+2+4

7=1+2+2+2

7=1+3+3

7=2+5

7=2+2+3

7=3+4

一共有14種情況,所以輸出14

方法1:

n = 7時下面的程式輸出的是

71 + 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 + 6

2 + 2 + 3

2 + 5

3 + 4

14

#include #include int count;

int a[100];

void dfs(int n, int m)

else

} }}

int main (void)

return 0;

}

方法2:

先將n劃分成a[ 1 ]和 a[ 2 ]然後再對a[ 2 ]進行劃分,在a[ 2 ]的劃分中又會對a[ 3 ]進行劃分…………

n = 7時下面的程式輸出的是

71 + 6

1 + 1 + 5

1 + 1 + 1 + 4

1 + 1 + 1 + 1 + 3

1 + 1 + 1 + 1 + 1 + 2

1 + 1 + 1 + 1 + 1 + 1 + 1

1 + 1 + 1 + 2 + 2

1 + 1 + 2 + 3

1 + 2 + 4

1 + 2 + 2 + 2

1 + 3 + 3

2 + 5

2 + 2 + 3

3 + 4

14跟上面的畢起來就能看出差別了

#include #include int a[110], count;

//對a[t]進行拆分

void dfs(int t)

printf("%d\n", a[t]);

for(i = a[j - 1]; i <= l / 2; i++) }

//對n進行拆分

void num(int n)

}int main (void)

return 0;

}

方法1比方法2速度慢,這題n只到80,所以也可以打表。

方法3:

動態規劃

/*

dp[i][j]表示整數i的劃分中,每個數不大於j的劃分數。

當i==0或者j==0的時候 dp[i][j] = 1, 因為整數1的劃分情況只有一種,每個整數的劃分都不大於1的情況只有一種

當i < j的時候,dp[i][j] = dp[i][i]

當i==j的時候,dp[i][j] = dp[i][j - 1] + 1,只比前一種情況多了j這種表示形式。

當i > j的時候,dp[i][j] = dp[i][j - 1] + dp[i - j][j]

dp[i][j - 1]是組合中不包含j的情況,

dp[i - j][j]是組合中包含j的情況。

*/

#include int dp[85][85];

int main (void)

for(i = 2; i < 85; i++) }

int n;

while(scanf("%d", &n) != eof)

return 0;

}

自然數拆分

問題描述 自然數的拆分 任何乙個大於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整數劃分可以參考...

自然數拆分

題目 給出sum min max和n四個正整數,請輸出所有將sum拆分為n個遞增的正整數 允許相等 之和,其中每個正整數k都滿足 min k max。在少俠的部落格 看到這道題 就隨手做了下。該題與輸出n個數取m個數的所有組合類似,只不過限定了m個數的和以及取值範圍。可以先用貪心演算法構造乙個最小的...

自然數無序拆分

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