동전이 1,2, 4, 10, 20, 40, 100, 200, 400, 1000, 2000 센트입니다. 나는 특정 금액 (< = 6000)을 지불하는 방법을 몇 가지 찾아 내고 싶다. 현재의 C++ 솔루션은 다음과 같이 동적 프로그래밍을 사용합니다 :변경 방법 수를 계산하십시오.
long long d[6010];
int coin[] = {1, 2, 4, 10, 20, 40, 100, 200, 400, 1000, 2000};
d[0] = 1;
for (int i = 0; i < 11; i++) { // iterate through all coins
for (int j = 1; j <= 6000; j++)
d[j] += d[j - coin[i]];
printf("%lld\n", d[20]);
출력이 잘못되었습니다 : -956301262. 오버플로 문제로 인한 것입니까?
처음에는 C++ 코드가 아니지만 C. –
'j - coin [i]'가 나오지 않습니다. – Pubby
답장을 보내 주셔서 감사합니다. @Pubby. 문제를 해결할 수있었습니다. –