蓝桥杯-粘木棍-DFS

题目

思路

--有n根木棍,需要将其粘成m根木棍,并求出最小差值,可以用DFS枚举出所有情况。粘之前有n根短木棍,粘之后有m根长木棍,那么让长木棍的初始长度设为0。外循环让所有的短木棍都参与粘,内循环让要粘的短木棍选择某个长木棍。再结合DFS进行n层递归,每层都粘一个短木棍,并且下一层要将已经粘过的排除掉。

--递归时最好不要用sort排序,很有可能会影响其他层的递归。

代码

#include <iostream>
#include <cmath>
using namespace std;int a[7];
int b[7] = {0}; //长木棍,由短木棍拼接而成,拼接前长度设为0 
bool v[7] = {false};
int n, m;
int mincha = 30000; //便于求出最小的差值void dfs(int s){if (s == n){int minb, maxb;minb = maxb = b[0];for (int i = 0; i < m; i++){minb = min(minb, b[i]);maxb = max(maxb, b[i]);}int cha = maxb - minb;mincha = min(mincha, cha); //更新minchareturn;}else{for (int i = s; i < n; i++){for (int j = 0; j < m; j++){if (v[i] == false){ //标记短木棍是否已被分配给长木棍 v[i] = true;b[j] += a[i];dfs(s + 1);v[i] = false;b[j] -= a[i];} }} //外层循环是短木棍,内层是长木棍,让每根短的都有机会粘到长的上面,枚举出所有可能的况。 }
}int main(){cin >> n >> m;for (int i = 0; i < n; i++){cin >> a[i];}dfs(0);cout << mincha << endl;return 0;
}
/*不能对数组b用sort排序,会改变b的顺序。单看改变b的顺序对这层递归没有什么影响,但是对其它层的递归有影响。 
*/

 

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

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

相关文章

windows 11访问Debian10上的共享目录

步骤 要在Windows 11上访问Debian 10.0.0的共享目录&#xff0c;可以通过以下步骤来实现&#xff1a; 1. 设置Samba服务&#xff1a;在Debian系统上&#xff0c;需要安装并配置Samba服务&#xff0c;以便能够实现文件夹共享。Samba是一个允许Linux/Unix服务器与Windows操作系…

2024年阿里云数据库价格_云数据库收费标准最新

2024年阿里云数据库价格查询&#xff0c;云数据库优惠活动MySQL版2核2GB 50GB配置99元一年&#xff0c;续费不涨价&#xff0c;续费也是99元1年&#xff0c;云数据库MySQL基础系列经济版 2核4GB 100GB配置227元1年&#xff0c;RDS SQL Server云数据库2核4G配置299元1年&#xf…

【CSS】Vue2使用TailwindCSS方法及相关问题

一.安装 1.npm安装TailwindCSS npm install tailwindcssnpm:tailwindcss/postcss7-compat tailwindcss/postcss7-compat postcss^7 autoprefixer^9 2.创建配置文件 npx tailwindcss init 3.创建postcss.config.js文件 // postcss.config.js module.exports {plugins: {t…

git的下载与安装

下载 首先&#xff0c;打开您的浏览器&#xff0c;并输入Git的官方网站地址 点击图标进行下载 下载页面会列出不同操作系统和平台的Git安装包。根据您的操作系统&#xff08;Windows、macOS、Linux等&#xff09;和位数&#xff08;32位或64位&#xff09;&#xff0c;选择适…

vue使用element-ui 实现自定义分页

可以通过插槽实现自定义的分页。在layout里面进行配置。 全部代码 export default { name:Cuspage, props:{total:Number, }, data(){return {currentPage:1,pageSize:10,} } methods: {setslot (h) {return(<div class"cusPage"›<span on-click{this.toBe…

E4-R升级固件方法 RockChip 3562

芯片&#xff1a;RockChip 3562 开发板 先安装驱动&#xff1a;DriverAssitant_v5.1.1 下载工具&#xff1a;RKDevTool_v3.13_for_window 烧录完整的update.img固件 1.选择update.img 2.关机下&#xff0c;同时Update和Power进入maskrom模式。界面会显示设备 3.点击升级 …

avue-crud顶部操作按钮插槽;avue-crud列数据插槽;avue-crud行操作按钮插槽

1.avue-crud顶部操作按钮插槽&#xff1b; <template slot"menuLeft" slot-scope"{ size }"><div class"left"><div class"btn"><el-button type"primary" size"small" click"onBatchR…

新能源汽车小三电系统

小三电系统 新能源电动汽车的"小三电"系统&#xff0c;一般指车载充电机(OBC)、车载 DC/DC 变换器&#xff0c;和高压直流配电盒(PDU)。一辆纯电动汽车一般配备一台OBC 和一台车载 DC/DC 变换器。OBC将外部输入的交流电转化为直流电输出给电池&#xff0c;DC/DC衔接…

zabbix配置

1 下载zabbix 1 配置yum源 rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release- 5.0-1.el7.noarch.rpm yum clean all yum makecache fast 完成后会出现zabbix.repo文件 2安装zabbix服务 yum -y install zabbix-server-mysql zabbix-web-mysql z…

使用stream流合并多个List(根据实体类特定属性合并)

开发情景 现有多个List集合,其中都是一样的实体类,这里我想根据实体类的特定属性将它们合并在一起,形成一个最终的List集合。 这里主要用到了Stream流的flatMap方法与reduce方法。 flatMap:可以将多个Stream流合并在一起,形成一个Stream流。 reduce:可以将Stram流中的元…

初级爬虫实战——哥伦比亚大学新闻

文章目录 发现宝藏一、 目标二、简单分析网页1. 寻找所有新闻2. 分析模块、版面和文章 三、爬取新闻1. 爬取模块2. 爬取版面3. 爬取文章 四、完整代码五、效果展示 发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不…

力扣经典题:删除字符使字符串变好

char* makeFancyString(char* s) {int sizestrlen(s);char*arr(char*)malloc(sizeof(char)*size1);if(size<3){return s;}arr[0]s[0];arr[1]s[1];int p2;for(int j2;j<size;j){if(s[j]!s[j-1]||s[j]!s[j-2]){arr[p]s[j];p;}}arr[p]\0;return arr; } 此代码的细节很多&am…

大模型训练准备工作

一、目录 1 大模型训练需要多少算力&#xff1f; 2. 大模型训练需要多少显存&#xff1f; 3. 大模型需要多少数据量训练&#xff1f; 4. 训练时间估计 5. epoch 选择经验 6. 浮点计算性能测试 二、实现 1 大模型训练需要多少算力&#xff1f; 训练总算力&#xff08;Flops&…

python知识点总结(三)

python知识点总结三 1、有一个文件file.txt大小约为10G&#xff0c;但是内存只有4G&#xff0c;如果在只修改get_lines 函数而其他代码保持不变的情况下&#xff0c;应该如何实现? 需要考虑的问题都有那些?2、交换2个变量的值3、回调函数4、Python-遍历列表时删除元素的正确做…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:TextPicker)

滑动选择文本内容的组件。 说明&#xff1a; 该组件从API Version 8开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 无 接口 TextPicker(options?: {range: string[] | string[][] | Resource | TextPickerRangeContent[] | Te…

深度解读:如何解决Image-to-Video模型视频生成模糊的问题?

Diffusion Models视频生成-博客汇总 前言&#xff1a;目前Image-to-Video的视频生成模型&#xff0c;图片一般会经过VAE Encoder和Image precessor&#xff0c;导致图片中的信息会受到较大损失&#xff0c;生成的视频在细节信息上与输入的图片有较大的出入。这篇博客结合最新的…

怎么在电脑上记录每日事项,并在桌面上显示便签记事本?

作为一名教师兼班主任&#xff0c;我每天的工作繁忙且多样。从早晨的课程准备&#xff0c;到课间的学生辅导&#xff0c;再到课后的作业批改和家长沟通&#xff0c;每一项工作都需要我细心且有条理地完成。在这样的工作节奏下&#xff0c;如何高效管理每日事项&#xff0c;确保…

python for循环打印字符串、指定区间范围数字以及打印区间数字内的奇数和偶数

1.一串字符&#xff0c;循环打印&#xff1a; 源码&#xff1a; strings"Python" n0 print("字符长度为&#xff1a;"str(len(strings))) for a in strings: nn1 print ("第"str(n)"位是&#xff1a;"a)打印结果&#xff1a…

【PyTorch】成功解决TypeError: iteration over a 0-d tensor

【PyTorch】成功解决TypeError: iteration over a 0-d tensor &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f448; 希望得到您…

【Java IO流】缓冲流和对象流的解析和应用实例

目录 前言 一、缓冲流 四种方式拷贝文件的用时对比 二、对象流 1. 使用对象流写入对象到本地文件 2. 使用对象流读取对象数据 总结 前言 【File文件管理及IO流&#xff08;基本流&#xff09;】http://t.csdnimg.cn/uG5Ff 该篇博客中&#xff0c;介绍了学习高级流需要的…