考虑一个游戏,其中玩家可以在一次操作中获得3、5或10分。给定总分n,找出达到该分数的“不同”组合数量。
我的代码:
对于输入11,我得到的输出是3,但可能的不同组合仅有1个。(11 = 3 + 3 + 5)
如何修改上述代码以返回“不同”组合的数量?
我的代码:
#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;
}
对于输入11,我得到的输出是3,但可能的不同组合仅有1个。(11 = 3 + 3 + 5)
如何修改上述代码以返回“不同”组合的数量?