題目一:給定陣列arr,arr中所有的值都為正數。每個值代表一種面值的貨幣,每種面值的貨幣可以使用任意張,再給定乙個整數aim代表要找的錢數,求組成aim的最少貨幣數。
如 arr=[5,2,3], aim=20. 最少需要4張
解題思路:
經典動態規劃一般分為3部,先求dp[i][j]矩陣中第一列的值,然後求dp矩陣中第一行的值,最後再依次從左到右,從上到下求剩下的位置。
c++ **如下所示
#include
#include
#define max 999
using
namespace
std;
int min1(int left, int up)
int mincoins(int arr, const
int aim)
return dp[row-1][aim];
}int main()
; int aim=20;
int result;
result = mincoins(arr, aim);
printf("%d\n",result);
//cout << result;
}
題目二:若每個值僅代表一張錢的面值,給定乙個整數aim代表要找的錢數,求組成aim的最少貨幣數。
舉例: arr=[5,2,5,3], aim =15 所有錢加起來為15,所以返回4
c++ **如下所示
#include
#include
#define max 999
using
namespace
std;
int min1(int left, int up)
int mincoins(int arr, const
int aim)
dp[0][arr[0]] = 1;
int left = 0;
for (int i = 1; i < row; i++)
for(int j = 1; j <= aim; j++)
return dp[row-1][aim];
}int main()
; int aim=7;
int result;
result = mincoins(arr, aim);
printf("%d\n",result);
//cout << result;
}
換錢最少貨幣數
給定陣列arr,arr中所有的值都為正數且不重複。每個值代表一種面值的貨幣,每種面值的貨幣可以使用任意張,在給定乙個整數aim代表要找的錢數,求組成aim的最少貨幣數。public class mincoins int len arr.length int max integer.max value...
換錢的最少貨幣數
題目 給定陣列arr,arr中所有的值都為正數且不重複。每個值代表一種面值的貨幣,每種面值的貨幣可以使用任意張,再給定乙個整數aim代表要找的錢數,求組成aim的最少貨幣數。舉例 arr 5,2,3 aim 20。4張5元可以組成20元,其他的找錢方案都要使用更多張的貨幣,所以返回4。arr 5,2...
換錢的最少貨幣數
換錢的最少貨幣數 給定陣列arr,arr中所有的值都為正整數且不重複。每個值代表一種面值的貨幣,每種面值的貨幣可以使用任意張,再給定乙個 aim,代表要找的錢數,求組成aim的最少貨幣數。輸入描述 輸入包括兩行,第一行兩個整數n 0 n 1000 代表陣列長度和aim 0 aim 5000 第二行n...