题解:P13886 [蓝桥杯 2023 省 Python A] 分糖果
_fallen_leaves_ · · 题解
P13886 [蓝桥杯 2023 省 Python A] 分糖果
题意
两种糖果分别有
思路
我们可以进行深度优先搜索,第一层为
每次深度优先搜索优先考虑:
- 如果两堆中有一堆的糖果变为了负数,那么就不必继续往下搜索了。
- 如果
7 个人都分完了,且两堆糖果都为0 ,那么就多一种方案。
然后继续往下搜索,分别考虑扣不同糖果的方式,继续向下搜索,搜索代码如下:
#include<bits/stdc++.h>
#define int long long
using namespace std;
int t,ans=0;
void dfs(int x,int y,int step)
{
if(x<0||y<0) return ;
if(step==7)
{
if(x==0&&y==0) ans++;
return ;
}
for(int i=0;i<=x;i++)
for(int j=0;j<=y;j++)
if(i+j>=2&&i+j<=5)
dfs(x-i,y-j,step+1);
}
signed main()
{
dfs(9,16,0);
cout<<ans;
return 0;
}
我们算出答案为
#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{
cout<<5067671;
return 0;
}