风科网免费网站/网站入口

风科网免费网站,网站入口,网站设计制作一般多少钱,今日军事新闻热点一 糖果 我们看这个蓝桥A组真题 首先我们看这个题目说有M种的糖果,K颗一包,N包糖果 第一行就是输入M,K,N的数量 后面就是输入每个糖果在每包里面的种类 然后问我们最少要用几包糖果才可以把所有种类的糖果都吃一遍 如果不可以吃完…

一  糖果

我们看这个蓝桥A组真题
首先我们看这个题目说有M种的糖果,K颗一包,N包糖果
第一行就是输入M,K,N的数量
后面就是输入每个糖果在每包里面的种类
然后问我们最少要用几包糖果才可以把所有种类的糖果都吃一遍
如果不可以吃完所有种类的糖果,就直接返回-1

当我在竞赛场上一定要冷静,思考这个题目是属于什么类型的
很显然,这个糖果有一个选和不选,那么就可以快速想到这个dfs来解决,如果不行的话就优化代码,可以去看这篇文章里面很详细的讲述优化算法 状态dp-CSDN博客

然后我们先来想一下这个怎么写
首先这里有很多的糖果,每个糖果只有选择和不选择,就像二叉树一样,那么递归也就只有两层,一个用于左子树,一个用于右子树,这两个递归分别代表选择和不选择
然后我们就再进行分析,搞定了递归的话,那么我后面就要搞定条件了
题目给的限制条件是要吃完所有的糖果类型,那么我们可以用一个状态数组来实现这个种类的糖果到底吃没吃,这样就可以知道到底有没有吃完所有的糖果了

我们来实现一下
代码都是作者自己敲出来的,如果有更好的代码,欢迎大家指出

#include<bits/stdc++.h>
#include<cstring>
#include<unordered_map>
using namespace std;
const int N = 110;
int n,m,k;       //包数,种类,几个一包
int candy[N][N];
bool st[N];      //标记对饮糖果的种类
int mincount=1e6;bool judge(){for(int i=1;i<=m;i++){if(!st[i])return false;}return true;
}//x表示当前包
void dfs(int x,int count){//减枝if(count>mincount) return ;if(x>n){if(judge()){mincount=min(mincount,count);}return ;}// 选择当前包bool temp[N];  // 临时保存 st 的状态memcpy(temp, st, sizeof(st));  // 保存当前状态for (int i = 1; i <= k; i++) {st[candy[x][i]] = true;}dfs(x + 1, count + 1);// 恢复 st 的状态memcpy(st, temp, sizeof(temp));//不选择dfs(x+1,count);
}int main(){scanf("%d %d %d",&n,&m,&k);memset(candy,0,sizeof(candy));for(int i=1;i<=n;i++){for(int j=1;j<=k;j++){scanf("%d",&candy[i][j]);}}dfs(1,0);if(mincount==1e6){printf("-1\n");return 0;}printf("%d\n",mincount);return 0;
}

 首先这个输入就没有必要说了,来说说这个dfs,首先这个dfs我一开始是犯了一个很严重的错误的,就是这个糖果的状态判断

//选择//增添对这个糖果的标记for(int i=1;i<=k;i++){st[candy[x][i]]=true;}dfs(x+1,count+1);//取消对这个口味的标记for(int i=1;i<=k;i++){st[candy[x][i]]=false;}//不选择dfs(x+1,count);

这个是我之前的写的代码
我当时是想着如果回溯就恢复原来的状态,但是我们忽略了还有之前已经找过的糖果状态是true,我这里设置全是true,所以会导致结果不对,后来才想到这个是需要上一次的状态的,所以这里就直接用了一个临时的数组来存储临时的状态,当回溯的时候就直接返回这个状态就好了,这个题目主要是难在这个状态我们该怎么去设置,dfs不难
 

二  入门
 

我们来看这种带有迷宫性质的,我们不适用广度优先搜索,使用dfs该怎么解决

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;const int N = 30;
int w, h;        // 宽度和高度
int res;         // 结果
char map[N][N];  // 地图
bool st[N][N];   // 状态int ax[] = {-1, 0, 1, 0};
int ay[] = {0, 1, 0, -1};void dfs(int x, int y) {for (int i = 0; i < 4; i++) {int a = x + ax[i];int b = y + ay[i];// 边界条件if (a >= h || a < 0 || b >= w || b < 0) continue;if (map[a][b] == '#') continue;if (st[a][b]) continue;st[a][b] = true;res++;dfs(a, b);}
}int main() {scanf("%d %d", &w, &h);  // 注意顺序:宽度 w,高度 hfor (int i = 0; i < h; i++) {scanf("%s", map[i]);  // 按行读取地图}for (int i = 0; i < h; i++) {for (int j = 0; j < w; j++) {if (map[i][j] == '@') {st[i][j] = true;  // 标记起点为已访问res = 1;          // 初始化结果,包括起点dfs(i, j);        // 开始 DFSbreak;            // 找到起点后退出循环}}}printf("%d", res);  // 输出结果return 0;
}

首先这个具有方向性质的首先就是考虑用向量数组,这样就可以帮助我们去移动,然后这个也有三个条件
1  不可以越界
2  遇到#要进行不走
3  走过的路不走
所以把握了这个很简单就可以写出来了
 


总结

首先我们现在越来越熟练这个dfs了,然后还熟悉记忆化搜索和剪枝的操作
这些都是十分重要对于搜索类型的题目,所以我们就要好好掌握
这里蕴含了两个条件
首先就是方向的移动
其次就是有没有拿过和有没有走过这些状态,这些状态是要用数组记录下来去使用的我们可以使用循环,也可以使用很多的方法,所以if和for这里面很重要
递归,for,if组成就构成了搜索

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/72237.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL】窗口函数详解(概念+练习+实战)

文章目录 前言1. SQL窗口函数 1.1 窗口函数概念1.2 窗口函数语法1.3 常见窗口函数 1.3.1 聚合窗口函数1.3.2 专用窗口函数 1.4 窗口函数性能比较 2. LeetCode 例题 2.1 LeetCode SQL 178&#xff1a;分数排名2.2 LeetCode SQL 184&#xff1a;最高工资2.3 LeetCode SQL 185&am…

【Ai】--- DeepSeek-r1 如何选择适合自己的版本(超详细)

在编程的艺术世界里&#xff0c;代码和灵感需要寻找到最佳的交融点&#xff0c;才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里&#xff0c;我们将共同追寻这种完美结合&#xff0c;为未来的世界留下属于我们的独特印记。 【Ai】--- DeepSeek-r1 如何选择适合自己…

植物大战僵尸金铲铲版 v1.1.6(windows+安卓)

游戏简介 《植物大战僵尸金铲铲版》是由“古见xzz”、“对不起贱笑了”、“是怪哉吖”等联合开发的民间魔改版本&#xff0c;融合了原版塔防玩法与《金铲铲之战》的自走棋元素&#xff0c;属于非官方同人作品。 游戏特点 合成升星机制&#xff1a;三个相同低星植物可合成更高…

网络空间安全(6)web应用程序技术

前言 Web应用程序技术是指用于开发和构建基于Web的应用程序的技术和工具&#xff0c;涵盖了前端开发、后端开发、数据库管理、安全性等多个方面的技术。 一、前端开发技术 HTML/CSS/JavaScript&#xff1a;HTML用于构建网页结构&#xff0c;CSS用于进行样式设计&#xff0c;Jav…

零基础学习OpenGL(一)创建一个窗口

基于 ubuntu 系统&#xff0c;设置基础环境。 #!/usr/bin/env bashsudo apt-get update# 安装基础编译软件 sudo apt-get -y install gcc g cmake git# 安装编译 glfw 依赖的软件 sudo apt-get -y install libwayland-dev libx11-dev libxcursor-dev libxi-dev libxinerama-de…

程序诗篇里的灵动笔触:指针绘就数据的梦幻蓝图(水文,勿三)

大家好啊&#xff0c;我是小象٩(๑ω๑)۶ 我的博客&#xff1a;Xiao Xiangζั͡ޓއއ 很高兴见到大家&#xff0c;希望能够和大家一起交流学习&#xff0c;共同进步。 这一节我们来学习指针的相关知识&#xff0c;学习内存和地址&#xff0c;指针变量和地址&#xff0c;包…

【实用技巧】RAGFlow+DeepSeek搭建私人Ai助理

前言 满血版DeepSeek虽然很好用&#xff0c;但仍然有三个主要缺陷&#xff1a; 联网的DeepSeek无法解决数据安全问题&#xff0c;如果使用&#xff0c;数据将传输到其服务器&#xff0c;数据隐私性无法保证。上传的文件存在限制&#xff0c;无法解决有多个文件的问题。回答的…

Storm实时流式计算系统(全解)——中

storm编程的基本概念-topo-spout-bolt 例如下&#xff1a; storm 编程接口-spout的结构及组件实现 storm编程案例-spout组件-实现 这是我的第一个组件&#xff08;spout组件继承BaseRichSput&#xff09;所有重写内部的三个方法&#xff0c;用于接收数据&#xff08;这里数据是…

【tplink】校园网接路由器如何单独登录自己的账号,wan-lan和lan-lan区别

老式路由器TPLINK&#xff0c;接入校园网后一人登录&#xff0c;所有人都能通过连接此路由器上网&#xff0c;无法解决遂上网搜索&#xff0c;无果&#xff0c;幸而偶然看到一个帖子说要把信号源网线接入路由器lan口&#xff0c;开启新世界。 一、wan-lan&#xff0c;lan-lan区…

Qt常用控件之旋钮QDial

旋钮QDial QDial 表示一个旋钮控件。 1. QDial属性 属性说明value当前数值。minimum最小值。maximum最大值。singleStep按下方向键时改变的步长。pageStep按下 pageUp/pageDown 的时候改变的步长。sliderPosition界面上旋钮显示的初始位置。tracking外观是否会跟踪数值变化&…

微服务笔记 2025/2/15

微服务是一种软件架构风格&#xff0c;它是以专注于单一职责的很多小型项目为基础&#xff0c;组合出复杂的大型应用。 微服务是一种架构。 微服务是一种架构。 微服务是一种架构。 以前自己做项目最常用的架构是单体架构。单体项目不适合开发大型项目。 学习微服务技术来解…

yunedit-post ,api测试比postman更好

postman应该是大家最熟悉的api测试软件了&#xff0c;但是由于它是外国软件&#xff0c;使用它的高端功能注册和缴费都比较麻烦。生成在线文档分享也经常无法访问被拦截掉。 这里可以推荐一下yunedit-post&#xff0c;该有的功能都有。 https://www.yunedit.com/postdetail …

6.6.6 嵌入式SQL

文章目录 2个核心问题识别SQL语句主语言和SQL通信完整导图 2个核心问题 SQL语句嵌入高级语言需要解决的2个核心问题是&#xff1a;如何识别嵌入语句&#xff1f;如何让主语言&#xff08;比如C,C语言&#xff09;和SQL通信&#xff1f; 识别SQL语句 为了识别主语言中嵌入的SQL…

Windows安装sql server2017

看了下官网的文档&#xff0c;似乎只有ubuntu18.04可以安装&#xff0c;其他debian系的都不行&#xff0c;还有通过docker的方式安装的。 双击进入下载的ISO&#xff0c;点击执行可执行文件&#xff0c;并选择“是” 不要勾选 警告而已&#xff0c;不必理会 至少勾选这两…

从零搭建Tomcat:深入理解Java Web服务器的工作原理

Tomcat是Java生态中最常用的Web服务器之一&#xff0c;广泛应用于Java Web应用的部署和运行。本文将带你从零开始搭建一个简易的Tomcat服务器&#xff0c;深入理解其工作原理&#xff0c;并通过代码实现一个基本的Servlet容器。 1. Tomcat的基本概念 Tomcat是一个开源的Servl…

京东云DeepSeek-R1模型一键部署教程,基于智算GCS【成本2元】

使用京东云智算一键部署DeepSeek-R1模型&#xff0c;京东云智算服务AI平台GCS支持DeepSeek-R1模型预装环境&#xff0c;支持1.5B、7B、32B及70B参数模型环境&#xff0c;用户可在GCS中快速启动&#xff0c;使用ChatbotUI或者Open-WebUI作为用户界面&#xff0c;进行测试并接入业…

Jenkins 自动打包项目镜像部署到服务器 ---(前端项目)

Jenkins 新增前端项目Job 指定运行的节点 选择部署运行的节点标签&#xff0c;dev标签对应开发环境 节点的远程命令执行配置 jenkins完整流程 配置源码 拉取 Credentials添加 触发远程构建 配置后可以支持远程触发jenkins构建&#xff08;比如自建的CICD自动化发布平台&…

双机热备旁挂组网实验

1拓扑图 2.要求 1 、 SW3 的流量 正常情况下&#xff1a; SW1_VRF-->FW1--->SW1_Public--->R5 故障情况下&#xff1a; SW2_VRF-->FW2--->SW2_Public--->R6 2 、 SW4 的流量 正常情况下&#xff1a; SW2_VRF-->FW2--->SW2_Public--->R6 故障情…

2025春新生培训数据结构(树,图)

教学目标&#xff1a; 1&#xff0c;清楚什么是树和图&#xff0c;了解基本概念&#xff0c;并且理解其应用场景 2&#xff0c;掌握一种建图&#xff08;树&#xff09;方法 3&#xff0c;掌握图的dfs和树的前中后序遍历 例题与习题 2025NENU新生培训&#xff08;树&#…

7.1.1 计算机网络的组成

文章目录 物理组成功能组成工作方式完整导图 物理组成 计算机网络是将分布在不同地域的计算机组织成系统&#xff0c;便于相互之间资源共享、传递信息。 计算机网络的物理组成包括硬件和软件。硬件中包含主机、前端处理器、连接设备、通信线路。软件中包含协议和应用软件。 功…