【算法实验5】

news2024/9/24 5:30:13

实验5-1 最短下降路径问题

【样例输入】

3

2 1 3

6 5 4

7 8 9

【样例输出】

13

#include<bits/stdc++.h>
using namespace std;
const int N = 105;
int n;
int g[N][N];
int f[N][N];
int res = 1e9+5;
int main()
{
    cin>>n;
    for(int i = 1; i <= n; i ++)
        for(int j = 1; j <= n; j ++)
			cin>>g[i][j];
    for(int j = 1 ; j <= n; j++)
		f[1][j] = g[1][j];

    for(int i = 2 ; i <= n; i ++)
        for(int j = 1 ; j <= n; j ++)
        {
            f[i][j] = f[i-1][j];
            if(j-1>=1)f[i][j] = min(f[i][j],f[i-1][j-1]); //左面还有元素
            if(j+1<=n)f[i][j] = min(f[i][j],f[i-1][j+1]); //右面还有元素
            f[i][j] += g[i][j]; 
        }
    for(int i = 1 ; i <= n ; i ++)
        res = min(res,f[n][i]);
    cout<<res;
    return 0;
}

实验5-2 最少硬币问题—动态规划

最少硬币问题----动态规划

问题描述:

  设有n 种不同面值的硬币,各硬币的面值存于数组T[1:n ]中。现要用这些面值的硬币来找钱。可以使用的各种面值的硬币个数存于数组Coins[1:n ]中。对任意钱数0≤m≤20001,设计一个用最少硬币找钱m 的方法。

编程任务:

  对于给定的1≤n≤10,硬币面值数组T 和可以使用的各种面值的硬币个数数组Coins, 以及钱数m,0≤m≤20001,编程计算找钱m 的最少硬币数。

数据输入:

  由文件input.txt 提供输入数据,文件的第一行中只有1 个整数给出n 的值,第2 行起每行2 个数,分别是T[j] 和Coins[j] 。最后1 行是要找的钱数m。

结果输出:

  程序运行结束时,将计算出的最少硬币数输出到文件output.txt 中。问题无解时输出-1。

输入文件示例输出文件示例

input.txt              output.txt

3                          5

1 3

2 3

5 3

18

#include<bits/stdc++.h>
using namespace std;
const int N = 11;
int coin[N],num[N],f[20005];
//f[]存储到达各个金额所需的最少硬币数量 
const int INF = 0x3f3f3f3f;
int main()
{
  int n,m;
  cin >> n;
  for(int i=0;i<n;i++) cin >> coin[i] >> num[i];
  cin >> m;
  for(int i=1;i<=m;i++) f[i]=INF; 
  //核心代码
  for(int i=0;i<n;i++)  //遍历每种硬币 
  	for(int j=1;j<=num[i];j++)  //对于每种硬币,考虑从1到该硬币的数量 
 	 {
  	  for(int k=m;k>=coin[i];k--) //从目标金额开始向下遍历到当前硬币面额。
  	  {
   	   f[k]=min(f[k],f[k-coin[i]]+1); //更新f[k],即组成金额k所需的最少硬币数量 
      } 
    } 
   //
  cout << (f[m] < m ? f[m] : -1) ; 
}

实验5-3 独立任务最优调度问题

问题描述:

    用2 台处理机A 和B 处理n 个作业。设第i 个作业交给机器A 处理时需要时间ai ,若由机器B 来处理,则需要时间bi。由于各作业的特点和机器的性能关系,很可能对于某些i, 有ai ≥ bi ,而对于某些j,j≠i,有aj < bj 。既不能将一个作业分开由2 台机器处理,也没有一台机器能同时处理2 个作业。设计一个动态规划算法,使得这2 台机器处理完这n 个作业的时间最短(从任何一台机器开工到最后一台机器停工的总时间)。研究一个实例:(a1,a2,a3,a4,a5,a6)=(2,5,7,10,5,2);(b1,b2,b3,b4,b5,b6)=(3,8,4,11,3,4) 。

编程任务:

    对于给定的2 台处理机A 和B 处理n 个作业,找出一个最优调度方案,使2 台机器处理完这n 个作业的时间最短。

数据输入:

    由文件input.txt 提供输入数据。文件的第1 行是1 个正整数n, 表示要处理n 个作业。接下来的2 行中,每行有n 个正整数,分别表示处理机A 和B 处理第i 个作业需要的处理时间。

结果输出:

  程序运行结束时,将计算出的最短处理时间输出到文件output.txt 中。

输入文件示例输出文件示例

input.txt                       output.txt

6                                  15

2 5 7 10 5 2

3 8 4 11 3 4

#include<bits/stdc++.h>
using namespace std;
const int N = 1010;
int n, a[N], b[N];
int ans, sum, dp[N][N];

int main() {
	cin >> n;
	for (int i = 1; i <= n; i++) cin >> a[i], sum += a[i];
	for (int i = 1; i <= n; i++) cin >> b[i];
	memset(dp, 0x3f, sizeof(dp)); 
	dp[0][0] = 0; 
	for (int i = 1; i <= n; i++) {
		for (int j = 0; j <= sum; j++) {
			if (j >= a[i]) {
			//A B择优 
				dp[i][j] = min(dp[i - 1][j - a[i]], dp[i - 1][j] + b[i]);
			} else {
				//只能B机器做
				dp[i][j] = dp[i - 1][j] + b[i]; 
			}
		} 
	}
	//找出最小的值 
	ans = 0x3f3f3f3f;
	for (int i = 0; i <= sum; i++) {
		int t = max(i, dp[n][i]); 
		ans = min(ans, t);
	} 
	cout << ans << endl;
	return 0;
}

实验5-4 双调旅行售货员问题—动态规划

欧氏旅行售货员问题是对给定的平面上n 个点确定一条连接这n 个点的长度最短的哈密顿回路。由于欧氏距离满足三角不等式,所以欧氏旅行售货员问题是一个特殊的具有三角不等式性质的旅行售货员问题。它仍是一个NP 完全问题。最短双调TSP 回路是欧氏旅行售货员问题的特殊情况。平面上n 个点的双调TSP 回路是从最左点开始,严格地由左至右直到最右点,然后严格地由右至左直至最左点,且连接每一个点恰好一次的一条闭合回路。

编程任务:

  给定平面上n 个点,编程计算这n 个点的最短双调TSP 回路。

数据输入:

  由文件input.txt 给出输入数据。第1 行有1 个正整数n,表示给定的平面上的点数。接下来的n 行中,每行2 个实数,分别表示点的x 坐标和y 坐标。

结果输出:

  将计算的最短双调TSP 回路的长度(保留2 位小数)输出到文件output.txt 。

输入文件示例               输出文件示例

input.txt                  output.txt

7                            25.58

0 6

1 0

2 3

5 4

6 1

7 5

8 2

#include<bits/stdc++.h> 
using namespace std;

const int maxn = 1010;
const double inf = 0x3f3f3f;

int n;
double x[maxn],y[maxn],dis[maxn][maxn],dp[maxn][maxn];
double cal(double x1,double x2,double y1,double y2)
{
	return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}

void solve()
{
        dp[1][2]=dis[1][2];
        for(int j=3;j<=n;j++){
            for(int i=1;i<=j-2;i++)dp[i][j]=dp[i][j-1]+dis[j-1][j];
            double Min=inf;
            for(int k=1;k<=j-2;k++)Min=min(Min,dp[k][j-1]+dis[k][j]);
            dp[j-1][j]=Min;
        }
        dp[n][n]=dp[n-1][n]+dis[n-1][n];
        printf("%.2lf\n",dp[n][n]);
    }

int main()
{
    cin >> n;
    for(int i = 1 ; i <= n ; i ++ )
    	cin >> x[i] >> y[i];
    for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			dis[i][j]=cal(x[i],x[j],y[i],y[j]);
    solve();
    return 0;
}

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

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

相关文章

2.C语言——控制语句

控制语句 1.分支语句/判断语句if 语句if...else 语句if...else if...else语句 switch语句 2.循环语句 while 语句 do...while 语句 for 语句 3.转向语句 break continue go to 1.分支语句/判断语句 if 语句 if(boolean_expression) { /* 如果布尔表达式为真将执行的语句 */ } …

禅道-项目从0到1的过程18开源版本使用

目录 一、禅道的下载安装12版本开源版 1.1、禅道 在计算机网络行业&#xff0c;禅道是一种开源的项目管理软件。它提供了敏捷开发、测试管理、bug跟踪、需求管理、团队协作等功能&#xff0c;适用于敏捷开发团队和软件开发项目管理。禅道软件旨在帮助团队更好地管理项目、提高…

读元宇宙改变一切笔记10_支付方式

1. 元宇宙中的经济 1.1. 元宇宙被设想为一个平行世界&#xff0c;人们将在那里花大量的时间工作和生活 1.1.1. 元宇宙的实现程度部分取决于它是否建立在一个繁荣的经济体系之上 1.2. 元宇宙中的经济将大体遵循现实世界的经济模式 1.2.1. 激烈的竞争、大量营利性企业的存在、…

yolov8的目标检测、实例分割、关节点估计的原理解析

1 YOLO时间线 这里简单列下yolo的发展时间线&#xff0c;对每个版本的提出有个时间概念。 2 yolov8 的简介 工程链接&#xff1a;https://github.com/ultralytics/ultralytics 2.1 yolov8的特点 采用了anchor free方式&#xff0c;去除了先验设置可能不佳带来的影响借鉴General…

树莓派也可以部署基于YOLO的目标检测

YOLO目标检测结果 在本文的第一部分中&#xff0c;我测试了YOLO&#xff08;You Only Look Once&#xff09;这一流行的目标检测库的“复古”版本。只使用OpenCV运行深度学习模型&#xff0c;而不使用“沉重”的框架如PyTorch或Keras&#xff0c;对于低功耗设备来说是有前途的&…

Python | 六、哈希表 Hash Table(列表、集合、映射)

哈希表基础 哈希表是一类数据结构&#xff08;哈希表包含数组、集合和映射&#xff0c;和前两篇文章叙述的字符串、链表平级&#xff09;哈希表概念&#xff1a;类似于Python里的字典类型&#xff0c;哈希表把关键码key值通过哈希函数来和哈希表上的索引对应起来&#xff0c;之…

DNA序列修正*

题目 import java.util.HashMap; import java.util.Map; import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt();sc.nextLine();char[] sq1 sc.next().toCharArray();sc.nextLine(…

ROS第 10 课 服务数据的自定义与使用

文章目录 第 10 课 服务数据的自定义与使用1.自定义服务数据2.服务数据的使用2.1 创建服务器和客户端代码2.2 运行服务器和客户端节点 第 10 课 服务数据的自定义与使用 1.自定义服务数据 注意&#xff1a;在自定义服务数据之前&#xff0c;需要先创建工作空间和功能包&#x…

【Linux第二课-权限】操作系统、Linux用户、Linux权限、Linux文件类型、粘滞位

目录 操作系统shell外壳为什么有shell外壳shell外壳是什么shell外壳工作原理 Linux用户root用户与非root用户root用户与普通用户的切换普通用户 --> root用户root用户 --> 普通用户普通用户 --> 普通用户对一条指令提升为root权限进行执行 Linux权限Linux中的权限角色…

STM32(--001) Win10、Win11 上的驱动安装说明

一、USB线插到 CMSIS-DAP 接口上&#xff0c;将自动识别到两个设备 ① CMSIS-DAP&#xff1a;用于烧录代码、在线硬件仿真; 在Keil里烧录&#xff0c;无需通过FlyMCU; ② USB转TTL&#xff1a;用于开发板与电脑间串口通信 &#xff0c;即USART1, TX-PA9、RX-PA10; 接口备注&a…

Java 流程控制 - 分支、循环

顺序控制 程序从上到下逐行执行&#xff0c;中间没有任何判断和跳转。 public class Test{//正确形式int a 1;int b a;// 错误形式int c d 1;int d 2; }块作用域 块&#xff08;即复合语句&#xff09;是指由一对大括号括起来的若干条简单的 Java 语句。块确定了变量的…

JVM性能调优-垃圾收集器G1详解

目录 G1收集器(-XX:UseG1GC) G1垃圾收集分类 YoungGC MixedGC Full GC G1收集器参数设置 G1垃圾收集器优化建议 什么场景适合使用G1 G1收集器(-XX:UseG1GC) G1 (Garbage-First)是一款面向服务器的垃圾收集器,主要针对配备多颗处理器及大容量内存的机器. 以极高概率满足…

redis未授权访问全漏洞复现

redis未授权访问全漏洞复现 Redis 有关的漏洞具有明显的时间分段性&#xff0c;在15年11月之前&#xff0c;主要是未授权导致的数据泄露&#xff0c;获得一些账号密码。另外还可以 DoS&#xff08;参考&#xff1a;Sangfor VMP redis unauthorized access vulnerability&#…

UI开发布局-HarmonyOS应用UI开发布局

UI页面的构建不用再像Android开发过程中在.xml文件中书写&#xff0c;可直接在页面上使用声明式UI的方式按照布局进行排列&#xff0c;构建应用的页面。 如下代码使用Row、Column构建一个页面布局&#xff0c;在页面布局中添加组件Text、Button&#xff0c;共同构成页面&#…

Git学习笔记(第5章):Git团队协作机制

目录 5.1 团队内协作 5.2 跨团队协作 Git进行版本控制都是在本地库操作的。若想使用Git进行团队协作&#xff0c;就必须借助代码托管中心。 5.1 团队内协作 问题引入&#xff1a;成员1&#xff08;大佬&#xff09;利用Git在宿主机上初始化本地库&#xff0c;完成代码的整体…

016-Vue-黑马2023:前后端分离开发(在线接口文档),前端工程化、Element、vue编写一个完成页面、Vue路由、vue打包部署到nginx

第三节 前后端分离开发 1、介绍 开发模式 前后端混合开发&#xff1a;传统开发模式 前后端分离开发&#xff1a;当前最为主流的开发模式 页面原型需求案例&#xff1a;分析出接口文档 离线开发文档示例&#xff1a; 2、YAPI&#xff08;官网已停用&#xff09; 202…

服务注册流程解析

本文主要介绍服务注册的基本流程 起手式 接上面的继续说&#xff0c;服务注册是一门至高无上的武学&#xff0c;招式千变万化 &#xff0c;九曲十八弯打得你找不到北。可正所谓这顺藤摸瓜&#xff0c;瓜不好找&#xff0c;可是这藤长得地方特别显眼。那么今天&#xff0c;就让…

【极问系列】springBoot集成elasticsearch出现Unable to parse response body for Response

【极问系列】 springBoot集成elasticsearch出现Unable to parse response body for Response 如何解决&#xff1f; 一.问题 #springboot集成elasticsearch组件,进行增删改操作的时候报异常Unable to parse response body for Response{requestLineDELETE /aurora-20240120/…

HarmonyOS4.0系列——07、自定义组件的生命周期、路由以及路由传参

自定义组件的生命周期 允许在生命周期函数中使用 Promise 和异步回调函数&#xff0c;比如网络资源获取&#xff0c;定时器设置等&#xff1b; 页面生命周期 即被Entry 装饰的组件生命周期&#xff0c;提供以下生命周期接口&#xff1a; onPageShow 页面加载时触发&#xff…

UE5 C++ 学习笔记 UBT UHT 和 一些头文件

总结一些似懂非懂的知识点&#xff0c;从头慢慢梳理。 任何一个项目都有创建这些三个.cs。 这个是蓝图转C 这个是本身就是C项目,应该就是多了一个GameModeBase类 Build.cs包含了每个模块的信息&#xff0c;表明了这个项目用到了哪一些模块。该文件里的using UnrealBuilTool 是…