2023蓝桥杯省赛真题分糖果 |枚举+DFS

题目链接:

2.分糖果 - 蓝桥云课 (lanqiao.cn)

说明:

虽然这道题并不是很难,思维上也不是特别难,数据小直接暴力就可以得到。但是还是需要注意一些细节,比如DFS的递归终止的条件的处理,当K>7的时候就要返回了,不然会继续向下递归,如果要三个条件同时成立才返回,那就会一直递归下去了,答案也不对。

另外是双重循环的模拟其实会有点难想,一开始还考虑会不会重复,但是仔细一想每个k,i,j的每个合法组合肯定是不会重复的。

代码:

cpp 复制代码
#include<bits/stdc++.h>
#define int long long
const int N=1e3+10;
using namespace std;

int ans=0;
void dfs(int k,int s1,int s2){
	if(k>7){//不能把三个条件写在一起判断,因为>7是返回的条件,三者满足是方案数目加一的条件 
	if(!s1&&!s2)
		ans++;
		return;
	}
	
		for(int i=0;i<=s1;i++){
      //已经大于5时不再继续分
			if(i>5) break;
			for(int j=0;j<=s2;j++){
				if(i+j>5) break;
				if(i+j<2) continue;
			//	if((i+j)>=2&&(i+j)<=5)
				dfs(k+1,s1-i,s2-j);
			}
		}
	
  
}

void solve(){
	dfs(1,9,16);
}

signed main() {
   
   cin.tie(0);
   cout.tie(0);
   solve();
   
   cout<<ans;
    return 0;
}
相关推荐
沐雪轻挽萤6 分钟前
17. C++17新特性-并行算法 (Parallel Algorithms)
java·开发语言·c++
山峰哥12 分钟前
SQL性能飞跃:从索引策略到查询优化的全链路实战指南
数据库·sql·性能优化·深度优先
A7bert77714 分钟前
【YOLOv8部署至RDK X5】模型训练→转换bin→Sunrise 5部署
c++·人工智能·python·深度学习·yolo·机器学习
扶苏xw20 分钟前
【分组背包】
算法·动态规划
李兆龙的博客25 分钟前
从一到无穷大 #68 Agent Memory 全景:大模型智能体记忆机制的形态、动态与前沿
大数据·人工智能·算法
cwplh1 小时前
平衡树学习笔记
数据结构·笔记·学习·算法
wen__xvn1 小时前
天梯赛L2刷题(也就写写水题骗骗自己了)
算法
EllinY1 小时前
扩展欧几里得算法 exgcd 详解
c++·笔记·数学·算法·exgcd
量子炒饭大师1 小时前
【C++11】RAII 义体加装指南 ——【包装器 与 异常】C++11中什么是包装器?有哪些包装器?C++常见异常有哪些?(附带完整代码讲解)
开发语言·c++·c++11·异常·包装器
AI科技星1 小时前
三维网格—素数对偶性及其严格证明(全域数学·统一基态演化版)
算法·数学建模·数据挖掘