換錢的最少貨幣數

2021-07-24 09:05:17 字數 1343 閱讀 5071

題目一:給定陣列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...