class Solution {
int ans = -1;
public int coinChange(int[] coins, int amount) {
return ans;
}
public void dfs(int[] coins, int amount, int index,int count) {
if(index==coins.length || amount<0){
return;
}
if(amount==0){
if(ans==-1){
ans = count;
}else{
ans = Math.min(ans,count);
}
}
dfs(coins,amount,index+1,count);
dfs(coins,amount-coins[index],index,count+1);
}
}
动态规划可以解决
```java
class Solution {
public int coinChange(int[] coins, int amount) {
int[] dp = new int[amount + 1];
Arrays.fill(dp, 100000);
dp[0] = 0;
for (int i = 1; i <= amount; i++) {
for (int j = 0; j < coins.length; j++) {
if (i - coins[j] >= 0) {
dp[i] = Math.min(dp[i], dp[i - coins[j]] + 1);
}
}
}
return dp[amount]==100000?-1:dp[amount];
}
}