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

news2024/9/21 22:48:36

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+1])
			i++;
		while(i<len-1){n[i]=n[i+1];i++;}
		len--;
		s--;
	}
	for(int i=0;i<len;i++){
		if(n[i]=='0' && i<len-1 && flag==1)
			continue;
		else
		{printf("%c",n[i]);flag=0;}
	}
	printf("\n");
	return 0;
}

实验二

#include <iostream>
using namespace std;

int main()
{
    int a[2][20];
    int flag[2];                                //定义标记线段,当前线段的两端点
    int n,len,tmp,i;
	printf("请输入线段个数:");
    scanf("%d",&n);
	printf("请输入线段始终坐标:\n");
    for(i=0;i<n;i++)
        scanf("%d %d",&a[0][i],&a[1][i]);             //按每个线段的左端点进行冒泡排序
    for(i=0;i<n;i++)       
        for(int j = 0; j < n - i - 1;j++)
            if(a[0][j] > a[0][j+1]){
                swap(a[1][j],a[1][j+1]);
                swap(a[0][j],a[0][j+1]);
            }
    len=a[1][0] - a[0][0];
    flag[0] = a[0][0];
    flag[1] = a[1][0];
    for(i=0;i<n;i++){
        if(a[0][i] >= flag[1]){                              //两线段无交集的情况 
            tmp = (a[1][i] - a[0][i]);
            len += tmp;
            flag[0] = a[0][i];
            flag[1] = a[1][i];
        }
        if(a[0][i] < flag[1]){
            if(a[1][i] > flag[1]){                           //有交集但不含于的情况
                tmp = (a[1][i] - flag[1]);
                len += tmp;
                flag[0] = a[0][i];
                flag[1] = a[1][i];
            }
        }
    }
    printf("覆盖的长度为:%d\n",len);
    return 0;
}



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

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

相关文章

Eclipse For ABAP:安装依赖报错

1.安装好Eclipse后需要添加依赖,这里的地址: https://tools.hana.ondemand.com/latest 全部勾选等待安装结束; 重启后报错:ABAP communication layer is not configured properly. This might be caused by missing Microsoft Visual C++ 2013 (x64) Runtime DLLs. Consu…

【面试经典150 | 数组】分发糖果

文章目录 写在前面Tag题目来源解题思路方法一&#xff1a;贪心两次遍历 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于本题涉及到的数据结构等内容…

STM32最小核心板使用HAL库实现CAN接口通讯(轮询方式)

这里使用了CAN1的接口&#xff0c;具体使用MX创建项目就不放了 需要注意的是&#xff0c;由于是最小核心没有CAN的收发模块需要外接一个 STM32核心板接CAN收发模块不需要交叉 /**CAN GPIO ConfigurationPA11 ------> CAN_RXPA12 ------> CAN_TX */ CAN收发模块…

数据结构知识总结

二叉树 满二叉树 特性 所有叶子结点都集中在二叉树的最下面一层上&#xff0c;而且结点总数为&#xff1a;2^n-1 (n为层数 / 高度&#xff09; 完全二叉树 特性 若设二叉树的高度为h&#xff0c;除第h层外&#xff0c;其他各层的节点数都达到最大个数&#xff0c;第h层有…

Windows 设置多显示器显示

Windows 设置多显示器显示 1. Windows 7 设置 HDMI 输出2. Windows 11 设置多显示器显示References 1. Windows 7 设置 HDMI 输出 2. Windows 11 设置多显示器显示 ​​​ References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

MAC本安装telnet

Linux运维工具-ywtool 目录 1.打开终端1.先安装brew命令2.写入环境变量4.安装telnet 1.打开终端 访达 - 应用程序(左侧) - 实用工具(右侧) - 终端 #注意:登入终端用普通用户,不要用MAC的root用户1.先安装brew命令 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/H…

Android Studio实现内容丰富的安卓校园助手班级成绩天气管理

获取源码请点击文章末尾QQ名片联系&#xff0c;源码不免费&#xff0c;尊重创作&#xff0c;尊重劳动 1.开发环境 android stuido3.6 jak1.8 eclipse mysql tomcat 2.功能介绍 安卓端&#xff1a; 1.注册登录 2.校园公告 3.课程列表 4.成绩列表&#xff0c;天气列表 5.个人中心…

python + tensorflow 开局托儿所自动点击脚本

python开局托儿所自动点击脚本 屏幕截图图片数字识别消除算法自动点击 屏幕截图 python 屏幕截图可以使用pyautogui或者PIL。我使用的是PIL中的ImageGrab(要授权)。 image ImageGrab.grab(bbox(0, 0, tool.static_window_width, tool.static_window_height)) image np.arra…

人脸表情识别系统项目完整实现详解——(三)训练MobileNet深度神经网络识别表情

摘要&#xff1a;之前的表情识别系统升级到v3.0版本&#xff0c;本篇博客详细介绍使用PyTorch框架来构建并训练MobileNet V3模型以进行实现表情识别&#xff0c;给出了完整实现代码和数据集可供下载。从构建数据集、搭建深度学习模型、数据增强、早停等多种技术&#xff0c;到模…

Django日志(一)

一、概念与配置 1.1、概述 日志是程序员经常在代码中使用快速和方便的调试工具。它在调试方面比print更加的优雅和灵活 而且日志记录对于调试很有用,可以提供更多,更好的结构化,有关应用程序的状态和运行状况的信息 Django框架的日志通过python内置的logging模块实现的,可…

inputStream.avaliable()方法网络操作读取不全BUG

一、问题描述 公司有个需求&#xff0c;就是调用方&#xff08;我&#xff09;需要把pdf文件转为Base64字符串作为参数传递为被调用方&#xff0c;以下是大致转换过程&#xff1a; URL url new URL("http://xxxx.pdf");HttpURLConnection uc (HttpURLConnection) …

XR“黑话”

MTP&#xff08;Motion-To-Photon Latency&#xff09;&#xff1a;实际人体发生运动到图像显示到屏幕上的时间延迟。早期一些vr产生晕动症的主要原因。 ATW&#xff08;Asynchronous Timewarp&#xff09;&#xff1a;主要解决两个问题&#xff0c;一是延迟&#xff0c;二是补…

R语言Meta分析核心技术:回归诊断与模型验证

R语言作为一种强大的统计分析和绘图语言&#xff0c;在科研领域发挥着日益重要的作用。其中&#xff0c;Meta分析作为一种整合多个独立研究结果的统计方法&#xff0c;在R语言中得到了广泛的应用。通过R语言进行Meta分析&#xff0c;研究者能够更为准确、全面地评估某一研究问题…

Django日志(三)

内置TimedRotatingFileHandler 按时间自动切分的log文件,文件后缀 %Y-%m-%d_%H-%M-%S , 初始化参数: 注意 发送邮件的邮箱,开启SMTP服务 filename when=h 时间间隔类型,不区分大小写 S:秒 M:分钟 H:小时 D:天 W0-W6:星期几(0 = 星期一) midnight:如果atTime未指定,…

Avue框架实现图表的基本知识 | 附Demo(全)

目录 前言1. 柱状图2. 折线图3. 饼图4. 刻度盘6. 仪表盘7. 象形图8. 彩蛋8.1 饼图8.2 柱状图8.3 折线图8.4 温度仪表盘8.5 进度条 前言 以下Demo&#xff0c;作为初学者来说&#xff0c;会相应给出一些代码注释&#xff0c;可相应选择你所想要的款式 对于以下Demo&#xff0c…

管理类联考–复试–英文面试–问题–WhatWhyHow--纯英文汇总版

文章目录 Do you have any hobbies? What are you interested in? What do you usually do in your spare time? Could you tell me something about your family&#xff1f; Could you briefly introduce your family? What is your hometown like? Please tell me so…

HTTPS 协议原理

目录 HTTPS VS HTTP HTTPS是什么 概念准备 常见的加密方式 对称加密 一个简单的对称加密例子 非对称加密 数据摘要&&数据指纹 数字签名 HTTPS 的工作过程探究 方案1-只使用对称加密 方案2-只使用非对称加密 方案3-双方都使用非对称加密 方案4-非对称加密…

01、Lua 入门教程

Lua 入门教程 Lua是一种轻量小巧的脚本语言&#xff0c;用标准C语言编写并以源代码形式开放&#xff0c; 其设计目的是为了嵌入应用程序中&#xff0c;从而为应用程序提供灵活的扩展和定制功能。 Lua是巴西里约热内卢天主教大学&#xff08;Pontifical Catholic University of…

搭建jumpserver堡垒机

堡垒机介绍&#xff1a; jumpServer是一款开源的堡垒机&#xff08;Bastion Host&#xff09;和会话管理系统&#xff0c;用于管理和保护企业的服务器和网络设备。它提供了安全的远程访问和会话审计功能&#xff0c;帮助组织实现对敏感系统和资源的集中管理和控制。 功能&…

VMware设备VMnet0上的网桥因桥接的以太网接口关闭而暂时停止运行(此虚拟机可能无法与主机或网络中的其他计算机通信,不显示ip)

文章目录 VMware设备VMnet0上的网桥因桥接的以太网接口关闭而暂时停止运行&#xff08;此虚拟机可能无法与主机或网络中的其他计算机通信,不显示ip&#xff09;解决办法如下1、查看本机电脑网络信息&#xff0c;看看用的是哪个网卡2、点击Vmware左上角的编辑&#xff0c;打开虚…