描述 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 題目描述 美羊羊給喜羊羊和沸羊羊出了一道難題,說誰能先做出來,我就獎勵給他我自己做的一樣禮物。沸羊羊這下可樂了,於是馬上答應立刻做出來,喜羊羊見狀,當然也不甘示弱,向沸羊羊發起了挑戰。...