当前位置: 首页 > news >正文

贪心算法应用例题

最优装载问题

#include <stdio.h>
#include <algorithm>//排序int main()
{int data[] = { 8,20,5,80,3,420,14,330,70 };//物体重量int max = 500;//船容最大总重量int count = sizeof(data) / sizeof(data[0]);//物体数量std::sort(data, data + count);//排序,排完数组中的数据从小到大排列int tmp = 0;//记总重量加和int n = 0;//记物体总件数for (int i = 0; i < count; i++)//从小到大,从轻到重挨个放进去{tmp += data[i];if (tmp > max){break;}n++;}printf("%d\n", n);return 0;}

#include <stdio.h>
//给的数字是否能种下
bool canPlaceFlowers(int* data, int datasize, int n)//数组。数组长度,给的数字
{int i=0;//数组下标从0开始if (n == 0)//一朵不种{return true;//能}int count = 0;while (i < datasize)//在种地(数组)的长度里面{if (data[i] == 1)//当前有花1{i += 2;//空1再种01}else if (i > 0 && data[i - 1] == 1)//左边有花,当前没花0{i += 1;//1}else if (i + 1 < datasize && data[i + 1] == 1)//右边有花,当前没花0{i += 3;//101}else{//data[i]=1;种花,可不种,本题只要求数数字count++;//可种花空地+1i += 2;//空1再种01,类似if1if (count == n)//一等于就能,可大于{return true;}}}//条件都过一遍,i+到相应位置,符合while再进,不符若count<n就错return false;}int main()
{int data[] = { 1,0,0,0,1,0,0,0,0,0,0,1 };//顺序种逆序种最大count都是3if (canPlaceFlowers(data, sizeof(data) / sizeof(data[0]), 3)){printf("可以!\n");//return true;}else{printf("不可以!\n");}return 0;
}

例如:

输出【5,10】

相邻距离近的先发生碰撞

输出为空,全爆炸完了

输出【10】

#include <stdio.h>
#include <math.h>
#include <stdlib.h>//碰撞爆炸函数
int* collision(int* data, int dataSize, int* retSize)//行星数组,数组大小(行星个数),碰炸后输出的数组
{int n = 0;//记录爆炸的个数while (1)//{int pre = 0;//左边行星下标int next = 1;//右边行星下标while (next < dataSize)//在数组内{if (data[pre] * data[next] < 0)//左右行星异号,方向相反{if (data[pre] < 0)//左边行星向左,则右向右,左右远离{//pre++;这样会有bug,pre可能走到爆炸过的0位置//next++;//移到下一个比较位置pre = next;//跳过中间可能有的0next++;continue;//跳出重进while (next < dataSize)}//左右相接近,3种爆炸情况,左没(变0),右没,左右都没if (abs(data[pre]) > abs(data[next]))//左绝对值大于右,abs求绝对值头函数math.h{data[next] = 0;//右炸没变0n++;}else if (abs(data[pre]) < abs(data[next])){data[pre] = 0;n++;}else//相等{data[pre] = 0;data[next] = 0;n += 2;}break;//出if (data[pre] * data[next] < 0)}//爆炸完出现0后的位置移动,3种if (data[pre] == 0){pre = next;next++;}else if (data[next] == 0)//[next==0]--[10,2]{next++;}else{pre = next;next++;}}if (next >= dataSize)//出数组,出while {break;}}*retSize = dataSize - n;//输出数组大小int* retArray = (int*)malloc(*retSize * sizeof(int));//动态申请数组for (int i = 0, k = 0; i < dataSize; i++)//遍历原数组{if (data[i]!=0)//data[i]不为0,为真,也可if (data[i]){retArray[k++] = data[i];//数组不为0粘贴}}return retArray;
}int main()
{int data[] = { 10,2,-5 };int size;int *ret = collision(data, 3, &size);for (int i = 0; i < size; i++){printf("%d", ret[i]);}return 0;
}

相关文章:

贪心算法应用例题

最优装载问题 #include <stdio.h> #include <algorithm>//排序int main() {int data[] { 8,20,5,80,3,420,14,330,70 };//物体重量int max 500;//船容最大总重量int count sizeof(data) / sizeof(data[0]);//物体数量std::sort(data, data count);//排序,排完数…...

亚信科技精彩亮相2024中国移动算力网络大会,数智创新共筑“新质生产力”

4月28至29日&#xff0c;江苏省人民政府指导、中国移动通信集团有限公司主办的2024中国移动算力网络大会在苏州举办。大会以“算力网络点亮AI时代”为主题&#xff0c;旨在凝聚生态伙伴合力&#xff0c;共同探索算力网络、云计算等数智能力空间&#xff0c;共促我国算网产业和数…...

图像处理中的颜色空间转换

在图像处理中&#xff0c;颜色空间转换是指将图像从一种颜色表示方式转换为另一种颜色表示方式。常见的颜色空间转换包括RGB到HSV、RGB到灰度、RGB到CMYK等。 RGB到HSV转换&#xff1a; RGB颜色空间由红色&#xff08;R&#xff09;、绿色&#xff08;G&#xff09;和蓝色&…...

网络安全之静态路由

以下是一个静态路由的拓扑图 Aping通B&#xff0c;C可以ping通D。 路由器转发数据需要路由表&#xff0c;但仍可以Aping通B&#xff0c;C可以ping通D&#xff0c;是因为产生了直连路由&#xff1a;产生的条件有两个&#xff0c;接口有IP&#xff0c;接口双up(物理up&#xff…...

Golang | Leetcode Golang题解之第74题搜索二维矩阵

题目&#xff1a; 题解&#xff1a; func searchMatrix(matrix [][]int, target int) bool {m, n : len(matrix), len(matrix[0])i : sort.Search(m*n, func(i int) bool { return matrix[i/n][i%n] > target })return i < m*n && matrix[i/n][i%n] target }...

2023黑马头条.微服务项目.跟学笔记(五)

2023黑马头条.微服务项目.跟学笔记 五 延迟任务精准发布文章 1.文章定时发布2.延迟任务概述 2.1 什么是延迟任务2.2 技术对比 2.2.1 DelayQueue2.2.2 RabbitMQ实现延迟任务2.2.3 redis实现3.redis实现延迟任务4.延迟任务服务实现 4.1 搭建heima-leadnews-schedule模块4.2 数据库…...

C语言 | Leetcode C语言题解之第75题颜色分类

题目&#xff1a; 题解&#xff1a; void swap(int *a, int *b) {int t *a;*a *b, *b t; }void sortColors(int *nums, int numsSize) {int p0 0, p2 numsSize - 1;for (int i 0; i < p2; i) {while (i < p2 && nums[i] 2) {swap(&nums[i], &num…...

淘宝扭蛋机小程序开发:掌上惊喜,转出你的幸运宝藏

一、全新玩法&#xff0c;尽在掌中 淘宝扭蛋机小程序&#xff0c;将传统的扭蛋乐趣与数字时代完美结合&#xff0c;为您带来全新的购物体验。在这个小小的平台上&#xff0c;您可以用手指轻松操控&#xff0c;探索无尽的宝藏世界&#xff0c;转出专属于您的幸运好物。 二、海…...

Oracle索引组织表与大对象平滑迁移至OceanBase的实施方案

作者简介&#xff1a;严军(花名吉远)&#xff0c;十年以上专注于数据库存储领域&#xff0c;精通Oracle、Mysql、OceanBase&#xff0c;对大数据、分布式、高并发、高性能、高可用有丰富的经验。主导过蚂蚁集团核心系统数据库升级&#xff0c;数据库LDC单元化多活项目&#xff…...

【服务治理中间件】consul介绍和基本原理

目录 一、CAP定理 二、服务注册中心产品比较 三、Consul概述 3.1 什么是Consul 3.2 Consul架构 3.3 Consul的使用场景 3.4 Consul健康检查 四、部署consul集群 4.1 服务器部署规划 4.2 下载解压 4.3 启动consul 五、服务注册到consul 一、CAP定理 CAP定理&#xff…...

无人机运营合格证:民用无人机驾驶航空器运营合格证书

无人机运营合格证是指经国家相关部门审核通过并颁发给相应无人驾驶航空器运营机构的一种资质证明。获得该证书的机构具备相关的技术和管理能力&#xff0c;能够安全、合规地运营无人驾驶航空器。 无人机运营合格证的申请流程一般包括报名、培训学习、考试准备、考试报名、考试…...

【编码利器 —— BaiduComate】

目录 1. 智能编码助手介绍 2. 场景需求 3. 功能体验 3.1指令功能 3.2插件用法 3.3知识用法 3.4自定义配置 4. 试用感受 5. AI编程应用 6.总结 智能编码助手是当下人工智能技术在编程领域的一项重要应用。Baidu Comate智能编码助手作为一款具有强大功能和智能特性的工…...

python 关键字(in)

9、in 在Python中&#xff0c;in关键字是一个强大的工具&#xff0c;用于检查一个元素是否存在于某个序列&#xff08;如列表、元组、字符串等&#xff09;或集合&#xff08;如集合、字典的键&#xff09;中。 基础小白知识&#xff1a;in的基本用法 1.1 在序列中检查元素 …...

【Node.js从基础到高级运用】二十八、Node.js 内存管理浅析

Node.js 作为一个基于 Chrome V8 引擎的 JavaScript 运行环境&#xff0c;其性能和效率在很大程度上取决于内存管理的优劣。 1. Node.js 内存结构 在深入了解内存管理之前&#xff0c;我们需要先了解 Node.js 的内存结构。Node.js 的内存可以大致分为以下几个部分&#xff1a;…...

AES加密解密

加密 java.util.Base64; javax.crypto.Cipher; javax.crypto.spec.SecretKeySpec; // 入参&#xff1a;data&#xff08;String&#xff09;、seed&#xff08;String&#xff09; Cipher cipher Cipher.getInstance("AES/ECB/PKCS5Padding"); SecretKeySpec secre…...

通过红黑树封装 map 和 set 容器(1):红黑树的迭代器

一、红黑树的迭代器 红黑树的遍历默认为中序遍历 —— key 从小到大&#xff0c;因此 begin() 应该获取到红黑树的最左节点 —— 最小&#xff0c;end() 获取到红黑树最右节点的下一个位置&#xff0c; operator() 也应保证红黑树的遍历为中序的状态。 首先对红黑树节点进行改造…...

mysqlbinlog恢复delete的数据

实验目的 delete数据后&#xff0c;用mysqlbinlog进行数据恢复 实验过程 原表 mysql> select * from mytest; ----------------- | id | name | score | ----------------- | 1 | xw01 | 90 | | 2 | xw02 | 92 | | 3 | xw03 | 93 | | 4 | xw04 | 94 | |…...

传递给组件

React 组件使用 props 相互通信。每个父组件都可以通过为其子组件提供道具来将一些信息传递给子组件。Props 可能会让您想起 HTML 属性&#xff0c;但您可以通过它们传递任何 JavaScript 值&#xff0c;包括对象、数组和函数。 Props 是传递给 JSX 标签的信息。例如&#xff0…...

鸿蒙通用组件弹窗简介

鸿蒙通用组件弹窗简介 弹窗----Toast引入ohos.promptAction模块通过点击按钮&#xff0c;模拟弹窗 警告对话框----AlertDialog列表弹窗----ActionSheet选择器弹窗自定义弹窗使用CustomDialog声明一个自定义弹窗在需要使用的地方声明自定义弹窗&#xff0c;完整代码 弹窗----Toa…...

[译文] 恶意代码分析:1.您记事本中的内容是什么?受感染的文本编辑器notepad++

这是作者新开的一个专栏&#xff0c;主要翻译国外知名安全厂商的技术报告和安全技术&#xff0c;了解它们的前沿技术&#xff0c;学习它们威胁溯源和恶意代码分析的方法&#xff0c;希望对您有所帮助。当然&#xff0c;由于作者英语有限&#xff0c;会借助LLM进行校验和润色&am…...

CircuitMind框架:突破LLM在数字电路设计中的布尔优化障碍

1. 项目概述&#xff1a;CircuitMind框架的创新价值在数字电路设计领域&#xff0c;布尔优化一直是硬件工程师面临的核心挑战。传统设计流程中&#xff0c;工程师需要手动应用卡诺图、奎因-麦克拉斯基算法等技巧来优化门级网表&#xff0c;这一过程既耗时又高度依赖专家经验。近…...

UCCL:GPU网络传输的性能优化与创新

1. UCCL&#xff1a;GPU网络传输的革命性创新在分布式机器学习训练场景中&#xff0c;GPU集群间的通信效率往往成为制约系统整体性能的关键瓶颈。传统基于TCP/IP的传输协议由于内核协议栈处理和多次数据拷贝等问题&#xff0c;难以满足现代AI训练任务对低延迟和高带宽的严苛要求…...

别再死记硬背base64了!深入浅出聊聊CTF中那些‘魔改’编码的识别与对抗思路

CTF逆向工程中的编码魔法&#xff1a;从Base64变异到通用对抗策略 在网络安全竞赛的战场上&#xff0c;编码就像是一把双刃剑——它既是保护信息的盾牌&#xff0c;也是隐藏线索的迷雾。对于CTF逆向选手而言&#xff0c;面对各种"魔改"编码就像是在解谜题时突然发现规…...

VS Code 轻量自动化实战:Trae 集成 3 步配置与 5 个高频任务模板

1. 三步集成不是魔法,是可控的上下文锚点 大多数人第一次在 VS Code 里配 Trae,会直接打开官方文档翻到「安装」章节,复制粘贴几行命令,重启编辑器,然后对着空白的侧边栏发呆——它没反应。不是插件没装好,也不是网络问题。是我试过三次才意识到:Trae 的「激活」不靠重…...

远洋边缘计算实战:基于 Linux 的客滚船高并发网络 QoS 调度与隔离策略

摘要&#xff1a;客滚船直连卫星网络面对几百名旅客并发时存在瘫痪与越权风险。本文记录了基于 Linux 构建标准工业级边缘网关多链路 QoS 调度与隔离的实操复盘。导语&#xff1a;在主导一艘国际客滚船的网络重构项目时&#xff0c;我们面临一个典型的高并发调度与合规挑战&…...

LinkSwift网盘直链助手:让你的下载体验更简单高效

LinkSwift网盘直链助手&#xff1a;让你的下载体验更简单高效 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云盘…...

Vue3 表单深度解析

Vue3 表单深度解析 引言 随着前端技术的发展,Vue.js 已经成为最受欢迎的前端框架之一。Vue3 作为 Vue.js 的最新版本,带来了许多改进和新特性。其中,表单处理是 Vue3 中一个非常重要的部分。本文将深入解析 Vue3 表单的用法、特点以及最佳实践。 Vue3 表单概述 在 Vue3 …...

operation backup

operation & backup 运维备份&#xff08;多地&#xff09;...

Firefly-RK3399从Ubuntu 16.04到自定义Rootfs:手把手教你编译内核与打包固件

Firefly-RK3399从Ubuntu 16.04到自定义Rootfs&#xff1a;手把手教你编译内核与打包固件 在嵌入式开发领域&#xff0c;能够自主定制系统镜像是一项极具价值的能力。Firefly-RK3399作为一款性能强大的开发板&#xff0c;其开放的架构为开发者提供了深度定制的可能性。本文将带你…...

别再只调参了!深入pix2pixHD的多尺度鉴别器与实例地图,解决你的图像合成‘塑料感’难题

突破图像合成瓶颈&#xff1a;pix2pixHD多尺度鉴别器与实例地图的实战精要 当你在深夜调试生成对抗网络&#xff0c;屏幕上的合成图像却始终带着难以消除的"塑料感"——表面过于光滑、边缘模糊、纹理缺乏层次。这种挫败感或许正是促使你点开本文的原因。作为GAN领域的…...