贪心算法(蓝桥杯 C++ 题目 代表 注解)

介绍:

贪心算法(Greedy Algorithm)是一种在每一步选择中都采取当前状态下最好或最优(即最有利)的选择,从而希望最终能够得到全局最好或最优的结果的算法。它通常用来解决一些最优化问题,如最小生成树、最短路径等。

贪心算法的核心思想是每次都选择局部最优解,而不考虑全局的情况。通过不断地做出局部最优选择,整体上就能得到一个接近最优解的解。

然而,贪心算法并不是在所有情况下都能得到最优解。由于贪心算法只考虑当前的最优选择,而不进行回溯,可能会导致最终结果并非全局最优解。因此,在使用贪心算法时,需要确保问题具备贪心选择性质(即局部最优解能够导致全局最优解)以及最优子结构性质(即问题的最优解包含了其子问题的最优解)。

在应用贪心算法时,可以采用贪心选择、最优子结构和证明最优性三个步骤来设计算法。首先,通过贪心选择找到局部最优解;然后,通过证明最优性来证明贪心选择是安全的;最后,通过最优子结构来将问题分解为子问题,并迭代地求解子问题。

总之,贪心算法是一种简单而有效的算法,可以在一些满足贪心选择性质和最优子结构性质的问题上得到最优解。然而,在应用贪心算法时需要注意验证问题的性质,以确保得到正确的结果。

题目一(找零问题):

 ​​

代码: 

#include<iostream>
using namespace std;
int main()
{int n, i = 1;cin >> n;int a[6] = { 0,100,50,20,5,1 };int cnt[6] = { 0 };while (n){cnt[i] = n / a[i];n -= cnt[i] * a[i];i++;}for (int i = 1; i <= 5; i++)cout << a[i] << ":" << cnt[i] << endl;
}

 题目二(分糖果):

代码: 

#include<iostream>
using namespace std;
int main()
{int n;cin >> n;int a[105];int ans = 0;for (int i = 1; i <= n; i++)cin >> a[i];while (1){int temp = a[1] / 2;//记录第一个孩子的一半,要给最后一个孩子的for (int i = 1; i < n; i++){a[i] = a[i] / 2 + a[i + 1] / 2;//依次传递}a[n] = a[n] / 2 + temp;//最后一个的为自身一半加上第一个孩子的一半int flag = 1;//记录是否都相同for (int i = 1; i <= n; i++){if (a[i] != a[1]){flag = 0;//标记为不同}if (a[i] % 2 == 1)//为基数补一个{a[i] += 1;ans++;//记录加上补了一个}}if (flag == 1)//都相同跳出break;}cout << ans;
}

 题目三(翻硬币):

代码:

#include<iostream>
using namespace std;
string s, x;
int cnt=0;
void swaps(int k)
{if (s[k] == '*')s[k] = 'o';elses[k] = '*';
}
int main()
{cin >> s >> x;for (int i = 0; i < s.size(); i++){if (s[i] != x[i]){swaps(i);swaps(i + 1);cnt++;}}cout << cnt << endl;
}

题目四(答疑):

代码:

#include<iostream>
#include<algorithm>
using namespace std;
struct node
{int s, a, e;long long sum;
};
bool cmp(node a, node b)//根据时间总和
{return a.sum < b.sum;
}
int main()
{int n;cin >> n;node student[1005];for (int i = 1; i <= n; i++){cin >> student[i].s >> student[i].a >> student[i].e;student[i].sum = student[i].s + student[i].a + student[i].e;}sort(student + 1, student + n + 1, cmp);//排序,从小到大long long time = student[1].s + student[1].a;//第一个学生此时发long long ans = time;for (int i = 2; i <= n; i++){time += student[i].s + student[i].a + student[i - 1].e;//这一个学生发的时间在上一个学生发的时间上再加上上一个学生离开的时间加上该生进入和询问的时间ans += time;}cout << ans;
}

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

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

相关文章

❤ Vue3项目搭建系统篇(二)

❤ Vue3项目搭建系统篇&#xff08;二&#xff09; 1、安装和配置 Element Plus&#xff08;完整导入&#xff09; yarn add element-plus --savemain.ts中引入&#xff1a; // 引入组件 import ElementPlus from element-plus import element-plus/dist/index.css const ap…

剑指offer经典题目整理(二)

一、斐波那契数列&#xff08;fib&#xff09; 1.链接 斐波那契数列_牛客题霸_牛客网 (nowcoder.com) 2.描述 斐波那契数列就是数列中任意一项数字&#xff0c;都会等于前两项之和&#xff0c;满足f(n) f(n-1) f(n-2) 的一个数列&#xff0c;例如&#xff1a;1 1 2 3 5 8…

CPU卡学习

外部认证主要流程&#xff1a; 1. 选卡 2. 发送RATS指令(0xe0 0x51 0x35 0xb4) 3. 成功后返回ATS &#xff1a;0x10 0x78 0x80 0xa0 0x2 0x20 0x90 0x0 0x0 0x0 0x0 0x0 0x38 0xc1 0x5f 0x3e 4. 发送选择MF指令(0xa 0x1 0x0 0xa4 0x0 0x0 0x2 0x3f 0x0 0xbf 0xeb) 5. 成功…

VMware虚拟机安装Ubuntu kylin22.04系统教程(附截图详细步骤)

一、版本信息 虚拟机产品&#xff1a;VMware Workstation 17 Pro 虚拟机版本&#xff1a;17.0.0 build-20800274 ISO映像文件&#xff1a;ubuntukylin-22.04-pro-amd64.iso 二、安装步骤 打开虚拟机&#xff0c;点击创建新的虚拟机&#xff1a; 选择自定义&#xff1a; 硬…

HarmonyOS NEXT应用开发之MpChart图表实现案例

介绍 MpChart是一个包含各种类型图表的图表库&#xff0c;主要用于业务数据汇总&#xff0c;例如销售数据走势图&#xff0c;股价走势图等场景中使用&#xff0c;方便开发者快速实现图表UI。本示例主要介绍如何使用三方库MpChart实现柱状图UI效果。如堆叠数据类型显示&#xf…

嘉绩咨询:搭建品牌招商桥梁,提供卓越讲师与会议服务

当下&#xff0c;品牌成功的关键在于强大的渠道支撑和高效的招商能力&#xff0c;在这一背景下&#xff0c;嘉绩咨询&#xff0c;这一专注于渠道招商全案系统孵化的知名平台型企业&#xff0c;今日宣布&#xff0c;将进一步加强其在品牌招商桥梁搭建上的服务功能&#xff0c;通…

HTML 学习笔记——标签创建小技巧

<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Emmrt工具</title></head><body>&…

未来 AI:引领研发技术的关键

2024 年 AI 辅助研发趋势 2024年&#xff0c;随着人工智能技术的不断发展&#xff0c;AI辅助研发正成为科学研究和创新的重要驱动力。在这一年&#xff0c;我们预见到以下几个重要的AI辅助研发趋势。 首先&#xff0c;自动化实验将成为研发领域的主流。AI将在实验室中扮演越来…

XS2185:八通道PSE控制器产品

八通道PSE控制器产品-XS2185 芯片特性 八通道PSE 支持标准PD供电 支持非标PD供电 每个端口功率最大30W 12位端口电流监测 12位电源电压监测 支持直流负载断开检测 支持LED供电状态指示 支持过流保护 支持短路保护 Sifos基本测试通过 32-PIN…

L1-030 一帮一

“一帮一学习小组”是中小学中常见的学习组织方式&#xff0c;老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组。本题就请你编写程序帮助老师自动完成这个分配工作&#xff0c;即在得到全班学生的排名后&#xff0c;在当前尚未分组的学生中&#xff0c;将名次最靠前的学…

每日一问之Java中的类加载机制

Java中的类加载过程分为 加载、链接、初始化 三个步骤 加载&#xff1a;将类的字节码文件加载到内存中 链接可以细化分成 验证、准备、解析 验证&#xff1a;检查类的字节码是否符合Java的语法规范 准备&#xff1a;为类的静态变量分配内存并设置初始值 解析&#xff1a;将类…

自动备份数据到异地服务器(另一台电脑)

我们经常遇到需要将数据备份到另一台服务器&#xff0c;但是没有免费的软件&#xff0c;所以很苦恼&#xff0c;去网上找&#xff0c;找来找去都要收费&#xff0c;关键还是月租或年租。。。 其实没必要去买别人的&#xff1b; 下面我给大家写了一个批处理&#xff0c;即可以搞…

【Linux】CentOS网络故障排查大揭秘: 实战攻略解读

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;Linux ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 检查网络连接状态&#xff1a; 检查网络配置&#xff1a; 重启网络服务&#xff1a; 检查防火墙设置&#xff1a; 查看日志文…

VBA技术资料MF128:批量创建文件夹及子文件夹

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…

基于SpringBoot+MYSQL的网页时装购物系统

目录 1、 前言介绍 2、主要技术 3、系统流程分析 3.1、系统登录流程图 3.2、添加信息流程图 3.3、删除信息流程图 4、系统体系结构 4.1、时装购物系统的结构图 4.2、登录系统结构图 4.3、时装购物系统结构图 5、数据库设计原则 5.1、管理员信息属性图 5.2、用户管…

2024038期传足14场胜负前瞻

2024038期售止时间为3月10日&#xff08;周日&#xff09;20点30分&#xff0c;敬请留意&#xff1a; 本期深盘多&#xff0c;1.5以下赔率3场&#xff0c;1.5-2.0赔率2场&#xff0c;其他场次是平半盘、平盘。本期14场整体难度中等偏上。以下为基础盘前瞻&#xff0c;大家可根据…

第二十五章 :Docker Compose插件快速安装

第二十五章 :Docker Compose插件快速安装 文章目录 前言一、安装步骤二、卸载三、参考文献Docker version 25.0.3, build 4debf41 ,Docker Compose version v2.24.2说明:上述文件对Docker与Docker Compose有版本的对应关系进行了匹配。 前言 国内大部分情况下,因为网络问题…

node面试知识

01node和浏览器有什么区别和联系&#xff0c;及node进行服务端开发的本质 Node.js和浏览器在JavaScript运行环境方面存在一些区别和联系。 区别&#xff1a; 运行环境&#xff1a;Node.js是一个服务器端JavaScript运行环境&#xff0c;而浏览器是一个客户端JavaScript运行环…

洛谷 8753.小平方

对于这道题来说就直接模拟就行了。 需要注意的一点就是:我们需要判断偶数和奇数的问题。 当我们遇到奇数的时候&#xff0c;在比较这个数的一半的时候&#xff0c;我们需要在/2的基础上1&#xff0c;这样才能过测试点。 上代码&#xff1a; #include<iostream> #incl…

Redis介绍

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是…