分為兩次方式:遞推和遞迴的形式。
/**
* 假設我們有8種不同的值的硬幣,用這些硬幣組合構成乙個給定的數值n。
* 例如n=200,那麼一種可能的組合方式為 200 = 3 * 1 + 1*2 + 1*5 + 2*20 + 1*50 + 1*100.
* * [華為面試題] 1分2分5分的硬幣三種,組合成1角,共有多少種組合
* 1*x + 2*y + 5*z = 10
* [創新工廠筆試題] 有1分,2分,5分,10分四種硬幣,每種硬幣數量無限,給定n分錢,有多少種組合可以組成n分錢
1 5 10 25 分 n,多少種組合方法
*/public
class 硬幣表示某個給定數值
}int
state;
/*遞推解法*/
public
intcountways1
(int n)
;int
dp =
newint[4
][n +1]
;//前i種面值,組合出面值j
for(
int i =
0; i <
4; i++
)for
(int j =
0; j < n +
1; j++
)for
(int i =
1; i <
4; i++)}
}return dp[3]
[n];
}/*遞推解法*/
public
intcountways2
(int n)
;int
dp =
newint
[n +1]
; dp[0]
=1;for
(int i =
0; i <
4; i++)}
return dp[n];}
/*遞迴形式*/
public
intcountways
(int n),3
);}private
intcountwayscore
(int n,
int[
] coins,
int cur)
return res;
}
12
3456
7n11
1111
1115
1111
22101
251
求給定值範圍內的所有完數
package org.study 功能 輸入給定值,求該值範圍內的完數。完數 乙個數的所有因子之和等於數本身。例如 6 1 2 3 public class perfectnumber public perfectnumber int factornum public void reset 求輸入...
9 回文數(判斷給定int值是否為回文數)
判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數。示例 1 輸入 121 輸出 true 示例 2 輸入 121 輸出 false 解釋 從左向右讀,為 121 從右向左讀,為 121 因此它不是乙個回文數。示例 3 輸入 10 輸出 false 解釋 從右向左...
最少的硬幣組合出1到m之間的任意值(貪婪演算法)
首先判斷有無解,如果最小面額硬幣大於1則無解,因為搭配不出1。如果有1則有解,因為所有面額都可以由1堆積出來。接下來思考乙個問題,假設當前硬幣可以組合出1到5的任意面額,那麼新增一枚面額為6的硬幣就可以搭配出1到11的任意面額。考慮1 i 1已經構出,那麼再加一枚什麼面值的硬幣最優,顯然選一枚 su...