題目描述
設n是乙個正整數,現在要求將n分解為若干個互不相同的自然數的和,使這些自然數的乘積最大。
解題思路
根據數學中和定近積大,積定近和小的原則,可得
1、若a+b等於乙個常數,則|a-b|越小,a*b就越大。要使得加數互不相同,又盡可能集中,那加數只能是連續的自然數了。
2、乙個數能分解,分解後乘積會比之前更大。
具體**實現
#include #define max 100
int main()
int num=index-1;
//將餘量加入從後向前分成1加入陣列
while(n)
//計算最大乘積
int result=1;
for(int i=0;iprintf("\n\n最大乘積為:%d\n",result);
return 0;
}
貪心 最優分解問題
設n是乙個正整數,現要求將n分解為若干個互不相同的自然數的和,使這些自然數的乘積最大.若a b n,則 a b 越小,a b就越大 當n 4時,乘積4時,n n a a,a 2 n n a 此時乘積 n 貪心策略 把n分成從2開始的連續自然數,如果最後剩下乙個數均勻地分給前面各項 具體 如下 inc...
最優分解問題
題目描述 設n是乙個正整數,現在要求將n分解為若干個互不相同的自然數的和,使這些自然數的乘積最大。輸入輸入乙個n n 100 輸出輸出最大的乘積 樣例輸入 1樣例輸出 1如果不理解思路,代入資料算一下就明白了 1的結果是1,2的結果是2,3的結果是3 include includeusing nam...
C 最優合併問題(貪心)
time limit 1000 ms memory limit 65536 kib submit statistic problem description 給定k 個排好序的序列s1 s2,sk 用2 路合併演算法將這k 個序列合併成乙個序列。假設所採用的2 路合併演算法合併2 個長度分別為m和n...