题目
答案
#include<iostream>
using namespace std;
int n,amount;
int a[10000],b[10000];
int check(int start,int last,int sum,int cnt)
{
if(start>last) return -1;
int tmp=amount-sum;
sum+=tmp-tmp%a[last];
cnt+=tmp/a[last];
if(sum==amount) return cnt;
else return check(start,last-1,sum,cnt);
}
int main()
{
cin>>n>>amount;
for(int i=0;i<n;i++)
{
cin>>a[i];
}
cout<<check(0,n-1,0,0);
}
注意
递归代码中,一定要先预设tmp,否则会因为sum自身值的变化导致递归失败