Greedy
基本思想
局部最优叠加-》整体最优
区间贪心#
区间不相交问题#
问题描述#
给出N个开区间(x,y),从中尽可能多得选取开区间,使得这些开区间两两没有交集。
做法#
总是先选择左端点较大的区间。
代码实现#
#include<stdio.h>
#include<algorithm>
using namespace std;
struct Node
{
int x, y;
}Intevals[100];
bool cmp(Node a, Node b)
{
if(a.x != b.x) return a.x > b.x;
else return a.x < b.x;
}
int main()
{
int n;
scanf("%d", &n);
for(int i = 0; i<n; i++)
{
scanf("%d%d", &Intevals[i].x, &Intevals[i].y);
}
sort(Intevals, Intevals+n, cmp);
int count = 1;
int X = Intevals[0].x;
for(int i = 1; i<n; i++)
{
if(Intevals[i].y <= X)
{
X = Intevals[i].x;
count++;
}
}
printf("%d\n", count);
return 0;
}
区间选点问题#
问题描述#
给出N个闭区间[x,y],求最少需要确定多少个点,才能使每个区间中最少存在一个点。
做法#
修改区间不相交问题的代码:
'Intervals[i].y <= X' -> 'Intervals[i].y < X'
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用