贪心算法应用例题

最优装载问题

#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;
}

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

JSON++介绍

1.简介 JSON 是一个轻量级的 JSON 解析库&#xff0c;它是 JSON&#xff08;JavaScript Object Notation&#xff09;的一个超集。整个代码由一个单独的头文件json.hpp组成&#xff0c;没有库&#xff0c;没有子项目&#xff0c;没有依赖项&#xff0c;没有复杂的构建系统&…

FL Studio20.9水果安装及切换修改中文语言教程

前言 喜欢音乐制作的小伙伴千万不要错过这个功能强大&#xff0c;安装便捷的音乐软件哦&#xff01;如果你们已经下载好了这款软件的话&#xff0c;小编今天在这里就为大家详细讲解下如何安装FL Studio软件&#xff0c;一起来学习吧&#xff01; 注意&#xff1a; &#xff0…

Java_方法引用

方法引用就是把已经有的方法拿过来用&#xff0c;当作函数式接口中抽象方法的方法体。 条件&#xff1a; 1.引用处需要是函数式接口 2.被引用的方法需要已经存在 3.被引用的方法的形参和返回值需要跟抽象方法的形参和返回值保持一致 4.被引用方法的功能需要满足当前的要求 简…

《Fundamentals of Power Electronics》——示例:Buck-Boost转换器模型变为正则形式

为了说明正则电路模型推导的步骤&#xff0c;让我们将buck-boost转换器的等效电路操作成规范形式。buck-boost转换器的一个小信号交流等效电路如下图所示。 为了将上图所示网络转换成正则形式&#xff0c;需要将所有独立源d(t)转换到左侧&#xff0c;而将所有电感转换到右侧与变…

爬虫学习(3)豆瓣电影

代码 import requests import jsonif __name__ "__main__":url https://movie.douban.com/j/chart/top_list#post请求参数处理&#xff08;同get请求一致&#xff09;headers {"User-Agent": Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/53…

HCIP的学习(OSPF总篇)

HCIA的复习 这边可以与我之前写的HCIA博客结合起来一起看&#xff0c;效果更好 HCIA的学习&#xff08;6&#xff09; OSPF状态机 down—关闭-----一旦启动OSPF进程&#xff0c;并发出hello报文&#xff0c;则进入下一个状态init----初始化状态------当收到的hello报文中存在…

Web实操(6),基础知识学习(24~)

1.[ZJCTF 2019]NiZhuanSiWei1 &#xff08;1&#xff09;进入环境后看到一篇php代码&#xff0c;开始我简单的以为是一题常规的php伪协议&#xff0c;多次试错后发现它并没有那么简单&#xff0c;它包含了基础的文件包含&#xff0c;伪协议还有反序列化 &#xff08;2&#x…

QT creator qt6.0 使用msvc2019 64bit编译报错

qt creator qt6.0报错&#xff1a; D:\Qt6\6.3.0\msvc2019_64\include\QtCore\qglobal.h:123: error: C1189: #error: "Qt requires a C17 compiler, and a suitable value for __cplusplus. On MSVC, you must pass the /Zc:__cplusplus option to the compiler."…

如何迁移Windows PC数据到统信UOS 1070

原文链接&#xff1a;如何迁移Windows PC数据到统信UOS 1070 Hello&#xff0c;大家好啊&#xff01;随着统信UOS 1070的推出&#xff0c;越来越多的用户和企业选择迁移到这个基于Linux的操作系统&#xff0c;以享受其安全性和稳定性的优势。今天&#xff0c;我们将探讨如何使用…

栈与队列(包括例题一道)

栈 栈的概念 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端 称为栈顶&#xff0c;另一端称为栈底。 栈中的数据元素遵守后进先出 LIFO &#xff08; Last In First Out &#xff09;的原则。 压栈&…

5月7号作业

将一张bmp图片&#xff0c;修改成德国国旗 #include <stdio.h>#include <string.h>#include <unistd.h>#include <stdlib.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <pthread.h>#include <…

【日志记录】---编译器内存对齐优化导致结构体指针引用成员出现地址错位

一&#xff1a;问题现象 在一个跨线程数据处理消息的时候出现了以下内存错位现象&#xff0c;在结构体指针引用的时候出现了成员数据异常 1.【数据源】线程A消息里面赋值的数据 //字节流 message.data[0] (unsigned char)model_brake_disable_type_read(); message.data[1]…

DirClass

DirClass 通过分析&#xff0c;发现当接收到DirClass远控指令后&#xff0c;样本将返回指定目录的目录信息&#xff0c;返回数据中的远控指令为0x2。 相关代码截图如下&#xff1a; DelDir 通过分析&#xff0c;发现当接收到DelDir远控指令后&#xff0c;样本将删除指定目录…

加密杂谈:Base 向上,BSC 向下

Aerdrome 价格走过一轮&#xff0c;Base 一己之力扶持起巅峰 1B Mcap, 2B FDV 的百倍币&#xff0c;秀出了肌肉&#xff0c;其所带来的正外部性也进一步盘活了 Base 生态 反观 BSC 本轮哪怕靴子落地依然没个响&#xff0c;差距在哪里&#xff1f;本 Thread 将以此为切入点探讨…

Material Studio 计算分子静电力、电荷密度以及差分电荷密度

1.先打开Material Studio导入要计算的分子cif文件或者mol文件&#xff0c;直接Flie-Import 2.高斯几何优化一下结构&#xff0c;参数按照我的设置就行&#xff0c;一般通用&#xff0c;后面出问题再调整 3.点完Run后会跳出很多计算过程&#xff0c;不用管&#xff0c;等他计算完…

【UE】利用物理学放置模型(以堆积石块为例)

目录 效果 步骤 一、准备工作 二、设置石块碰撞 三、绘制石块 效果 步骤 一、准备工作 1. 在虚幻商城中安装“Physical Layout Tool”插件 2. 在虚幻编辑器中勾选插件“Physical Layout”插件 3. 在Quixel Bridge中将我们所需要的石块资产添加到项目中 这里我们导入…

typescript 对象数组和函数

typescript 对象数组和函数 对象 在JavaScript中&#xff0c;对象属于非原始类型。对象也是一种符合数组类型&#xff0c;由若干个对象属性构成。对象属性可以是任意数据类型&#xff0c;比如数组&#xff0c;函数或者对象等。当对象属性为函数的时候&#xff0c;称为方法。 …

ubuntu20安装colmap

系统环境 ubuntu20 &#xff0c;cuda11.8 &#xff0c;也安装了anaconda。因为根据colmap的官方文档说的&#xff0c;如果根据apt-get安装的话&#xff0c;默认是非cuda版本的&#xff0c;而我觉得既然都安装了cuda11.8了&#xff0c;自然也要安装cuda版本的colmap。 安装步骤…

[Scrcpy]数据线连接安卓手机投屏windows电脑[win控制安卓手机]比Samsung Dex好用

配置好&#xff0c;只需要两步即可完成安卓手机投屏windows 第一步&#xff1a;usb线连接windows电脑 第二步&#xff1a;cmd输入投屏命令srccpy 搞定 前言/背景 一些视频资料只能下载到手机&#xff0c;很不喜欢手机那么小屏幕播放&#xff0c;播放很不方便 在家的话可以投…

做题速度太慢了,面不上

没办法&#xff0c;之前练了一个月的sql。两个月不写&#xff0c;现在差不多忘干净了。工作空窗期&#xff0c;或者休息期不能太久&#xff0c;不然学再多的内容都可能会忘完的。 sql题&#xff0c;腾讯四道sql题&#xff0c;限时45分钟完成。我只做了一道&#xff0c;还没做完…