算法设计与分析-贪心算法的应用动态规划算法的应用——沐雨先生

本文介绍了如何使用贪心算法解决两个问题:给定一个n位正整数a,确定最少需要删除多少个数字以保持顺序得到最小值;以及计算给定线段的覆盖长度。通过具体示例展示了如何在C++中实现这两个问题的算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 理解贪心算法的概念;

2.掌握贪心算法的基本思想。

(1)删数问题

问题描述:给定 n 位正整数 a ,去掉其中任意 k ≤ n 个数字后,剩下的数字按原次序排列组成一个新的正整数。对于给定的 n 位正整数 a 和正整数 k ,设计一个算法找出剩下数字组成的新数最小的删数方案。

输入(第一行为a,第二行为k):

657943148
3

输出:

543148
在这里插入图片描述
在这里插入图片描述

(2)线段覆盖

问题描述:在一维空间中告诉你N 条线段的起始坐标与终止坐标,要求求出这些线段一共覆盖了多大的长度。

输入:

4//表示输入的线段个数
2 5//线段起始坐标 线段终止坐标
6 7
1 3
3 4

输出:

5
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

源程序

实验一

#include<stdio.h>
#include<cstring>
char n[200];
int s,i,len,flag=1;
int main(){
   
	printf("请输入一个n位正整数a:");
	scanf("%s",n);
	printf("请输入删除数字的个数:");
	scanf("%d",&s);
	len=strlen(n);
	while(s){
   
		i=0;
		while(n[i]<=n[i+
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沐雨先生

如果真的帮助到你了再打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值