大整數分割成 多個小整數問題(二)

2021-06-10 01:18:30 字數 697 閱讀 3336

問題:

分硬幣問題,假設sum代表總的錢數,陣列a中的元素代表有的單個硬幣,問sum最少需要a中的幾個硬幣(可以重複)加起來才能得到sum?

比如:

int a = ;

int sum = 63;

那麼最少就是3個21的才能得到sum

ps:貪婪演算法在這個例子中就不成立,所以貪婪方法沒有用

演算法1:

和大整數分割成 多個小整數問題(一)一樣,迴圈每次sum減去a中的有的乙個硬幣面值,總數就等於這個硬幣數(1)+剩下的需要的最小硬幣數硬幣數,迴圈每次結果都和最小比較如果更少就更新最小值,邊界條件是如果等於0就表明這個構成方法有效,返回0;如果小於0則無效,返回

integer.min_value
最後result為負則不更新最小硬幣數值

**:

public int mincoinnumbers1(int a,int sum)
這個迴圈中的最小值。

邊界條件是:如果在a陣列中存在對應的sum,那就直接返回1表示取這個硬幣。

**如下:

public int mincoinnumbers2(int a,int sum)

result = 0;

} return min;

}

Problem B 整數分割(II)

time limit 1 sec memory limit 128 mb submit 218 solved 95 submit status web board 對輸入的乙個int範圍內的正整數進行分割。乙個int型別範圍內的正整數。設輸入的整數有n位數,當n是偶數時,分別輸出2個數 第1個數是輸...

問題 正整數分組

題目描述 將一堆正整數分為2組,要求2組的和相差最小。例如 1 2 3 4 5,將1 2 4分為1組,3 5分為1組,兩組和相差1,是所有方案中相差最少的。輸入 第1行 乙個數n,n為正整數的數量。第2 n 1行,n個正整數。n 100,所有正整數的和 10000 輸出 輸出這個最小差 樣例輸入 5...

大整數問題

題目描述 有乙個k 1 k 80 位的十進位制正整數n,設計乙個程式,找到滿足條件 p3 p2 3p n的p的最大值。測試用例 輸入 1000000000000001000000000000003000000000000001 輸出 100000000000000 複製 include includ...