add: 220521 [cpp]

This commit is contained in:
Eat-Swap 2022-05-21 16:10:40 +08:00
parent 77b7de421a
commit 0969951471
Signed by: Eatswap
GPG Key ID: BE661106A1F3FA0B
2 changed files with 26 additions and 1 deletions

25
cpp/2205/220521.cpp Normal file
View File

@ -0,0 +1,25 @@
#include <vector>
#include <cstring>
/**
* 322. Coin Change
* You are given an integer array coins representing coins of different denominations and an integer amount representing a total amount of money.
* Return the fewest number of coins that you need to make up that amount. If that amount of money cannot be made up by any combination of the coins, return -1.
* You may assume that you have an infinite number of each kind of coin.
*/
class Solution {
public:
static int coinChange(const std::vector<int>& coins, int amount) {
if (!amount)
return 0;
int dp[10005];
std::memset(dp, 0x7F, sizeof dp);
dp[0] = 0;
for (int i = 0; i < 10005; ++i)
for (int j : coins)
if (i - j >= 0 && dp[i - j] < 0x7F7F7F7F)
dp[i] = std::min(dp[i], dp[i - j] + 1);
return dp[amount] >= 0x7F7F7F7F ? -1 : dp[amount];
}
};

View File

@ -3,4 +3,4 @@ PROJECT(2205)
SET(CMAKE_CXX_STANDARD 23) SET(CMAKE_CXX_STANDARD 23)
ADD_EXECUTABLE(2205 220520.cpp) ADD_EXECUTABLE(2205 220521.cpp)