#include<iostream>
#include<math.h>
#include<cstring>
#include<cstdio>
using namespace std;
int n,m;
int count;
int num[4]={0,1,2,5};
void dfs(int sum,int cnt)
{
int x;
int i;
if(cnt>n||sum>m||(cnt==n&&sum<m)||(cnt<n&&sum==m))//
return ;
if(cnt==n&&sum==m)
{
count++;
}
for(i=1;i<=3;i++)//
{
x=sum+num[i];
if(x<=m&&cnt<=n)
{
dfs(x,cnt+1);
}
}
return ;
}
int main()
{
int t;
while(cin>>t)//
{
while(t--)//
{
cin>>n>>m;
int cnt=0;
int sum=0;
count=0;
dfs(sum,cnt);//
cout<<count<<endl;
}
}
return 0;
}
hdu 2566 统计硬币 dfs 不能排除组合重复的情况 代码不完整
最新推荐文章于 2021-04-20 10:56:04 发布