#include
const int jud = 65535;
//32位 int型最大整數 用來進行陣列的賦值
int mincoins(const int arr, const int &length, const int &aim);
int main()
std::cout << mincoins(arr, n, aim);
system("pause");
return 0;
}int mincoins(const int arr, const int &length, const int &aim)
int mincoins = 0;
//用來記錄函式返回值,在函式返回之前需要將動態分配的記憶體釋放
int **dp = new int *[length];
//動態申請乙個dp[length][aim + 1]的陣列
for (int i = 0; i < length; ++i)
for (int i = 0; i < length; ++i)
//dp陣列第一列全部賦值為0
for (int i = 1; i < aim + 1; ++i)
//第一行陣列將i的值為arr[0]的倍數的dp[0][i]遞增儲存,其他為jud
else
dp[0][i] = jud;
}int left = 0;
for (int i = 1; i < length; ++i)
dp[i][j] = left < dp[i - 1][j] ? left : dp[i - 1][j];}}
mincoins = dp[length - 1][aim];
for (int i = 0; i < length; ++i)
//釋放動態申請的陣列
delete dp;
return mincoins == jud ? -1 : mincoins;
}
換錢的最少貨幣數 動態規劃
給定陣列arr,arr中所有的值都為正整數且不重複。每個值代表一種面值的貨幣,每種面值的貨幣可以使用任意張,再給定乙個aim,代表要找的錢數,求組成aim的最少貨幣數。輸入描述 輸入包括兩行,第一行兩個整數n 0 n 1000 代表陣列長度和aim 0 aim 5000 第二行n個不重複的正整數,代...
動態規劃C 實現 換錢的最少貨幣數
題目 換錢的方法數 給定陣列 arr,arr中所有的值都為正數且不重複。每個值代表一種面值的貨幣,每種面值的貨幣可以使用任意張,再給定乙個整數aim代表要找的錢數,求組成aim的最少貨幣數。舉例 arr 5,2,3 aim 20.4張5元可以組成20元。返回 4 arr 5,2,3 aim 0 不使...
換錢最少貨幣數
給定陣列arr,arr中所有的值都為正數且不重複。每個值代表一種面值的貨幣,每種面值的貨幣可以使用任意張,在給定乙個整數aim代表要找的錢數,求組成aim的最少貨幣數。public class mincoins int len arr.length int max integer.max value...