LeetCode .잔돈 교환(동적 기획)
액면가가 다른 동전 코인과 총 금액 아몬드를 정한다.총 금액을 모으는 데 필요한 최소한의 동전 개수를 계산하기 위해 함수를 작성해라.만약 어떤 동전 조합도 총 금액을 구성할 수 없다면, -1로 되돌아간다.
예1:·입력:coins=[1,2,5],amount=11·출력:3·해석:11=5+5+1
#include
#include
using namespace std;
class Solution {
public:
int coinChange(vector<int>& coins, int amount) {
//dp[i]:i
vector<int>dp(amount + 1, INT_MAX);
dp[0] = 0;
// , , ,
for (int i = 1; i <= amount; ++i)
for (int j = 0; j < coins.size(); j++)
if (i - coins[j] >= 0 && dp[i - coins[j]] != INT_MAX)
// i <<>> (i-coins[j]) +1【 coins[j] 】
dp[i] = min(dp[i], dp[i - coins[j]] + 1);
return dp[amount] == INT_MAX ? -1 : dp[amount];
}
};
2、
액면가가 다른 동전과 총 금액을 정하다.함수를 써서 총 금액을 모을 수 있는 동전의 조합수를 계산하다.모든 액면가의 동전이 무한하다고 가정해 보세요.
예1: 입력:amount=5,coins=[1,2,5] 출력: 4 해석: 4가지 방법으로 총 금액을 모을 수 있다. 5=5(잔돈 5+dp[0]로 사용) 5=2+2+1(잔돈 2+dp[3]로 사용) 5=2+1+1+1+1(잔돈 2+dp[3]로 사용) 5=1+1+1+1+1(잔돈 1+dp[4]로 사용)
#include
using namespace std;
class Solution {
public:
int change(int amount, vector<int>& coins) {
//dp[i]: i ( )
vector<int> dp(amount + 1, 0);
// coins coins 1
dp[0] = 1;
// , , , 5=(2)+2+1=(1)+2+2
// , ,
// ==>> , coins[0..j-1] ,
// coins[j] , , 。
//
for (int j = 0; j < coins.size(); j++)
// coins[j] ,
for (int i = coins[j]; i < amount + 1; i++)
dp[i] += dp[i - coins[j]];
return dp[amount];
}
};
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
python 문자열 입력으로 모든 유효한 IP 주소 생성(LeetCode 93번 문제)이 문제의 공식 난이도는 Medium으로 좋아요 1296, 반대 505, 통과율 35.4%를 눌렀다.각 항목의 지표로 말하자면 보기에는 약간 규범에 맞는 것 같지만, 실제로도 확실히 그렇다.이 문제의 해법과 의도는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.