贪心算法(蓝桥杯 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';
	else
		s[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;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

实时智能应答3D数字人搭建

语音驱动口型的算法 先看效果&#xff1a; 你很快就可以帮得上我了 FACEGOOD 决定将语音驱动口型的算法技术正式开源&#xff0c;这是 AI 虚拟数字人的核心算法&#xff0c;技术开源后将大程度降低 AI 数字人的开发门槛。FACEGOOD是一家国际领先的3D基础软件开发商&#xff0c;…

恢复IDEA误删除的git提交,提交被删除,尝试恢复提交

​​​​​​ dgqDESKTOP-JRQ5NMD MINGW64 /f/IdeaProjects/workspace/spzx-parent ((8bb112e...)) $ git reflog 8bb112e (HEAD, origin/master, master) HEAD{0}: checkout: moving from master to 8bb112e5ac18dfe4bbd64adfd06363e46b609f21 8bb112e (HEAD, origin/master, …

第十三章StringTable

第十三章StringTable 文章目录 第十三章StringTable1. String的基本特性2. String的内存分配3. 字符串的拼接操作体会执行效率&#xff1a; 4. intern&#xff08;&#xff09;的使用问题1new String&#xff08;"ab"&#xff09;会创建几个对象&#xff1f;看字节码…

PID的含义及查看方法(macOS系统和Windows系统)

一 PID的含义 PID是processs indentifier的缩写&#xff0c; 中文是进程标识符。我们每启动一个软件&#xff0c;系统都会生成一个进程&#xff0c;同时生成一个对应的PID&#xff08;一串数字&#xff0c;一般从0开始&#xff09;&#xff0c;在软件运行期间&#xff0c;PID是…

Day34-Linux网络管理4

Day34-Linux网络管理4 1. IP地址分类与子网划分基础1.1 什么是IP地址1.2 十进制与二进制的转换1.3 IP地址的分类1.4 私网地址和局域网地址 2. 通信类型3. 子网划分讲解3.1 为什么要划分子网&#xff1f;3.2 什么是子网划分&#xff1f;3.3 子网划分的作用&#xff1f;3.4 子网划…

表单进阶(3)-上传文件和隐藏字段

上传文件&#xff1a;<input type"file"> 隐藏字段&#xff1a;<input type"hidden" name"" id"" value"带给后端的信息"> 禁用disabled&#xff1a;<button disabled"disabled">注册</bu…

简历--毕业论文

文章目录 MPLS VPN网络的设计与实施一、研究背景和意义二、研究内容2.1网络设计2.1.1 MPLS VPN配置思路2.1.2基本配置2.1.3 实验结果 三、结论其他 MPLS VPN网络的设计与实施 摘 要&#xff1a;本文选择研究对象是cisco的MPLS VPN网络&#xff0c;具有经济适用&#xff0c;扩展…

08 线性卷积

各位看官&#xff0c;大家好&#xff01;本讲为《数字信号处理理论篇》08 线性卷积。&#xff08;特别提示&#xff1a;课程内容为由浅入深的特性&#xff0c;而且前后对照&#xff0c;不要跳跃观看&#xff0c;请按照文章或视频顺序进行观看。 最近阳春三月&#xff0c;万物复…

HarmonyOS系统开发基础环境搭建

一 鸿蒙介绍&#xff1a; 1.1 HarmonyOS系统是华为自研的一款分布式操作系统&#xff0c;兼容Android&#xff0c;但又区别Android&#xff0c;不仅仅定位于手机系统。更侧重于万物物联和智能终端&#xff0c;目前已更新到4.0版本。 1.2 HarmonyOS软件编程语言是ArkTS&#x…

MySQL--索引优化实战篇(1)

前言&#xff1a; 我们常说的SQL优化&#xff0c;简单来说就是索引优化&#xff0c;通过合理创建索引&#xff0c;调整SQL语法等&#xff0c;来提升查询效率&#xff0c;想要进行SQL优化&#xff0c;就必须知道索引的原理&#xff0c;而且能够看懂SQL的执行计划。 MySQL–索引…

瑞芯微第二代8nm高性能AIOT平台 RK3576 详细介绍

RK3576处理器 RK3576瑞芯微第二代8nm高性能AIOT平台&#xff0c;它集成了独立的6TOPS&#xff08;Tera Operations Per Second&#xff0c;每秒万亿次操作&#xff09;NPU&#xff08;神经网络处理单元&#xff09;&#xff0c;用于处理人工智能相关的任务。此外&#xff0c;R…

ARM-v7 程序计数器PC的相关指令与应用

1. 前言 如图1所示&#xff0c;R14是连接寄存器&#xff08;Link Register&#xff09;&#xff0c;在汇编指令中通常也写为LR&#xff0c;用于存储函数调用和异常等的返回信息&#xff0c;复位时&#xff0c;默认值为0xFFFFFFFF&#xff1b; 图1 Core register R15是程序计数…

华为OD机考-C卷

文章目录 攀登者问题停车场最短路径 攀登者问题 24/03/09 20:50~23:10 攀登者喜欢寻找各种地图&#xff0c;并且尝试攀登到最高的山峰。地图表示为一维数组&#xff0c;数组的索引代表水平位置&#xff0c;数组的元素代表相对海拔高度。其中数组元素0代表地面。一个山脉可能有多…

【软考】单元测试

目录 1. 概念2. 测试内容2.1 说明2.2 模块接口2.3 局部数据结构2.4 重要的执行路径 3. 测试过程2.1 说明2.2 单元测试环境图2.3 驱动模块2.4 桩模块 4. 模块接口测试与局部数据结构测试的区别 1. 概念 1.单元测试也称为模块测试&#xff0c;在模块编写完成且无编译错误后就可以…

C++ 11 新特性线程mutex互斥访问共享变量

一.互斥锁介绍 互斥锁&#xff08;mutex&#xff09;是C11中用于保护共享资源的一种同步机制&#xff0c;其原理基于以下关键点&#xff1a; 独占所有权&#xff1a;std::mutex提供独占所有权的特性&#xff0c;即在同一时间只有一个线程能够拥有互斥锁。当一个线程拥有锁时&am…

嵌入式 Linux 学习

在学习嵌入式 Linux 之前&#xff0c;我们先来了解一下嵌入式 Linux 有哪些东西。 1. 嵌入式 Linux 的组成 嵌入式 Linux 系统&#xff0c;就相当于一套完整的 PC 软件系统。 无论你是 Linux 电脑还是 windows 电脑&#xff0c;它们在软件方面的组成都是类似的。 我们一开电…

使用大型语言模型进行实体提取

原文地址&#xff1a;Using A Large Language Model For Entity Extraction LLM 能否比传统 NLP 方法更好地提取实体&#xff1f; 2022 年 7 月 12 日 Large Language Models for Generative Information Extraction: A Survey 实体简介 使用Co:here大型语言模型。 实体可以被视…

Python之Web开发中级教程----搭建Git环境三

Python之Web开发中级教程----搭建Git环境三 多人分布式使用仓库操作实例 场景&#xff1a;开发者A&#xff0c;开发者B在同一个项目协同开发&#xff0c;修改同一个代码文件。开发者A在Win10下&#xff0c;开发者B在Ubuntu下。 1、开发者A修改提交代码 从GitHub: Let’s bu…

数据库-DQL

基本查询 -- 查询id&#xff0c;name,creatdata select id,name,creatdata from tb_emp;-- 查询所有值 select id, user, name, gender, image, mima, zhiwei, creatdata from tb_emp;select *from tb_emp;-- 不推荐-- 查询id creatdata&#xff0c;并起一个别名 select id ID…

部署LVS负载均衡集群架构

目录 一、ipvsadm 工具 二、NAT模式下部署LVS负载均衡 1、部署NFS共享存储服务器 1.1 安装NFS软件 1.2 新建共享目录和站点文件 1.3 设置共享策略 2、部署节点服务器1 2.1 安装并启动nginx软件 2.2 挂载共享目录到网页站点目录 2.3 修改网关 3、部署节点服务器2 3.…