플레이어는 이동 중에 3 점 또는 5 점 또는 10 점을 얻을 수있는 게임을 고려하십시오. 총 점수 n이 주어지면 주어진 점수에 도달하는 '고유 한'조합 수를 찾습니다.동적 프로그래밍 - 주어진 점수에 도달하기위한 고유 한 조합 수
내 코드:
입력은 11#include <iostream>
#include<unordered_map>
using namespace std;
unordered_map<int,int> m;
int numOfWays(int n){
if(n==0)
return 1;
if(n<0)
return 0;
if(m[n]>0)
return m[n];
m[n] = numOfWays(n-3)+numOfWays(n-5)+numOfWays(n-10);
return m[n];
}
int main(){
int t;
cin>>t;
cout<<numOfWays(t)<<endl;
return 0;
}
, I 출력 만 가능한 별개의 조합으로 3 얻고 단지 내가이를 수정하려면 어떻게 1 (11 = 3 + 3 + 5)
입니다 '뚜렷한'조합의 수를 반환하는 코드?
코드는 (3, 3, 5), (3, 5, 3) 및 (5, 3, 3)을 서로 다른 조합으로 계산하므로 3을 ans로 제공합니다. – sudoer
예 알아요.하지만 별개의 조합 만 계산하면 진행할 수 없습니다. –
"동전 변경"또는 "변경 사항 변경"은이 문제가 자주 발생하는 이름입니다. 당신은 웹상에서 그리고 당신이 그것을 검색한다면 stackoverflow에 많은 자원을 발견 할 것입니다. –