C 換錢的最少貨幣數 動態規劃

2021-08-07 05:19:09 字數 1002 閱讀 3586

#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...