DFS刷题记录

Last updated on May 23, 2024 pm

DFS:广度优先搜索

一、分糖果

​ 假如有有两种糖果,每种分别有m和q个,要分给k个人,并且每个人手上的糖果不少于2个不多于5个,一共有多少种分法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;

int res;
int k,m,q;
void dfs(int n,int a,int b)
{
if(n==k)
if(a==m&&b==q) res++; //分好了
return; //n若已达到k,不管有没有分好都需要return
for(int i=0;i<=m;i++)
for(int j=0;j<=q;j++)
if(i+j>=2&&i+j<=5)
dfs(n+1,a+i,b+j);
return;
}
int main()
{
cin>>k>>m>>q;
dfs(0,0,0);
cout<<res<<endl;
}


DFS刷题记录
http://example.com/2024/05/04/DFS刷题记录/
Author
Yaodeer
Posted on
May 4, 2024
Licensed under