题目:
题解:
int coinChange(int* coins, int coinsSize, int amount) {int dp[coinsSize+1][amount+1];for(int i=0;i<=coinsSize;i++){for(int j=0;j<=amount;j++){dp[i][j]=INT_MAX-1;//初始化值为INT_MAX-1,避免后续加一导致溢出}}for(int i=0;i<=coinsSize;i++){dp[i][0]=0;}for(int i=1;i<=coinsSize;i++){for(int j=0;j<=amount;j++){if(j>=coins[i-1]&&dp[i][j-coins[i-1]]!=(INT_MAX-1)){dp[i][j]=fmin(dp[i-1][j],dp[i][j-coins[i-1]]+1);}else{dp[i][j]=dp[i-1][j];}}}if(dp[coinsSize][amount]==(INT_MAX-1))return -1;return dp[coinsSize][amount];
}