题目链接:小A点菜
题目思路:从第一道菜开始往后搜索,如果当前菜的价格大于携带的钱,回溯一步后接着搜索
#include<iostream>
#include<cstdio>
using namespace std;
int a[120];
int n,m,tot;
void dfs(int k,int x)
{
if(k>m)
return ;
if(k == m)
{
tot ++;
return ;
}
for(int i=x+1;i<=n;i++)
{
dfs(k+a[i],i);
}
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
dfs(0,0);
cout<<tot<<endl;
return 0;
}
emmmm
这题还是一道01背包问题。。。
???