C语言-算法-线性dp

news2024/11/17 13:53:45

[USACO1.5] [IOI1994]数字三角形 Number Triangles

题目描述

观察下面的数字金字塔。

写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以走到左下方的点也可以到达右下方的点。

在上面的样例中,从 7 → 3 → 8 → 7 → 5 7 \to 3 \to 8 \to 7 \to 5 73875 的路径产生了最大权值。

输入格式

第一个行一个正整数 r r r ,表示行的数目。

后面每行为这个数字金字塔特定行包含的整数。

输出格式

单独的一行,包含那个可能得到的最大的和。

样例 #1

样例输入 #1

5
7
3 8
8 1 0
2 7 4 4
4 5 2 6 5

样例输出 #1

30

提示

【数据范围】
对于 100 % 100\% 100% 的数据, 1 ≤ r ≤ 1000 1\le r \le 1000 1r1000,所有输入在 [ 0 , 100 ] [0,100] [0,100] 范围内。

代码

#include <stdio.h>
#include <stdlib.h>
int max(int a, int b); // 用于比较两个数的大小的函数
#define MAX 10000
int dp[MAX][MAX]; // 定义一个二维数组,用于存储金字塔和动态规划的状态

int main(int argc, char *argv[])
{
	int r, i, j;
	scanf("%d", &r);
	
	for (i = 1; i <= r; i++)
	{
		for (j = 1; j <=i; j++)
		{
			scanf("%d", &dp[i][j]); // 读取该位置的值
		}
	}
	for (i = r - 1; i >= 1; i--) // 从倒数第二行开始,逐行向上
	{
		for (j = 1; j <= i; j++)
		{
			// 选择下方或者右下方的较大值,然后加上当前位置的值
			dp[i][j] += max(dp[i + 1][j], dp[i + 1][j + 1]);
		}
	}
	printf("%d\n", dp[1][1]); // 输出顶部的值,即最大值
	return 0;
}

int max(int a, int b) // 用于比较两个数的大小的函数
{
	if (a > b)
	{
		return a;
	}
	else
	{
		return b;
	}
}

[USACO11JAN] Profits S

题目描述

The cows have opened a new business, and Farmer John wants to see how well they are doing. The business has been running for N (1 <= N <= 100,000) days, and every day i the cows recorded their net profit P_i (-1,000 <= P_i <= 1,000).

Farmer John wants to find the largest total profit that the cows have made during any consecutive time period. (Note that a consecutive time period can range in length from one day through N days.) Help him by writing a program to calculate the largest sum of consecutive profits.

奶牛们开始了新的生意,它们的主人约翰想知道它们到底能做得多好。这笔生意已经做了N(1≤N≤100,000)天,每天奶牛们都会记录下这一天的利润Pi(-1,000≤Pi≤1,000)。

约翰想要找到奶牛们在连续的时间期间所获得的最大的总利润。(注:连续时间的周期长度范围从第一天到第N天)。

请你写一个计算最大利润的程序来帮助他。

输入格式

* Line 1: A single integer: N

* Lines 2…N+1: Line i+1 contains a single integer: P_i

输出格式

* Line 1: A single integer representing the value of the maximum sum of profits for any consecutive time period.

样例 #1

样例输入 #1

7 
-3 
4 
9 
-2 
-5 
8 
-3

样例输出 #1

14

提示

The maximum sum is obtained by taking the sum from the second through the sixth number (4, 9, -2, -5, 8) => 14.

代码

#include <stdio.h>
#include <stdlib.h>
int max(int a, int b); // 比较两个数的大小的函数
#define MAXN 200000

int main(int argc, char *argv[])
{
	int N, i, P[MAXN], max_P;
	int dp[MAXN]; // 表示以第i天结束的最大连续子序列的和
	scanf("%d", &N);
	
	for (i = 1; i <= N; i++)
	{
		scanf("%d", &P[i]); // 每天的利润
	}
	dp[1] = P[1]; // 初始化dp[1]为第一天的利润
	max_P = dp[1]; // 记录最大的利润
	for (i = 2; i <= N; i++)
	{
		dp[i] = max(dp[i - 1] + P[i], P[i]); // 状态转移方程
		max_P = max(max_P, dp[i]); // 更新最大利润
	}
	printf("%d", max_P);
	
	return 0;
}

int max(int a, int b) // 比较两个数的大小的函数
{
	if (a > b)
	{
		return a;
	}
	else
	{
		return b;
	}
}

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

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

相关文章

centos手动下载配置redis并自启动

有些服务器不能自动安装配置redis&#xff0c;仓库找不到之类的问题&#xff0c;就需要手动下载配置redis&#xff0c;记录下&#xff0c;方便以后使用&#xff08;ps&#xff0c;如果报错可能是gcc缺失&#xff09; 1、下载 Redis 源码包&#xff1a;访问 Redis 官网或可信的…

前端学习生产环境、开发环境、测试环境

1、路径 定义是什么环境 NODE_ENVdevelopment 开发环境 2、.env 端口号 3、.env.development 开发环境 4、.env.production 生产环境 5、.env.test 测试环境 6、如何访问&#xff0c;通过process.env进行访问 学习中.......

acrobat调整pdf的页码和实际页码保持一致

Acrobat版本 具体操作 现在拿到pdf的结构如下&#xff1a; pdf页码实际页码1-10页无页码数11页第1页 操作&#xff0c;选择pdf第10页&#xff0c;右键点击 具体设置 最终效果

视频渲染靠cpu还是显卡 会声会影视频渲染的作用是什么

视频渲染最占用的资源就是CPU&#xff0c;多核心多线程&#xff0c;这样才能渲染快。渲染可以在时间线上实时平滑预览&#xff0c;便于编辑&#xff0c;最终导出成片的时候速度也会快一些&#xff0c;渲染就是对每桢的图像进行重新优化的过程。 渲染的作用主要是能够保证使用者…

64、ubuntu使用c++/python调用alliedvisio工业相机

基本思想&#xff1a;需要使用linux系统调用alliedvisio工业相机完成业务&#xff0c;这里只做驱动相机调用&#xff0c;具体不涉及业务开发 Alvium 相机选型 - Allied Vision 一、先用软件调用一下用于机器视觉和嵌入式视觉的Vimba X 软件开发包 - Allied Vision VimbaX_Set…

【vue ajax】封装ajax,可直接复用

在项目经过统一代理后&#xff0c;部分功能想直接发送请求&#xff0c;不用统一api&#xff0c;可以封装一个ajax进行网络传输 ajax(method, url, data) {return new Promise(function (resolve, reject) {const xhr new XMLHttpRequest();xhr.onreadystatechange function (…

HCIP实验6-交换接口实验

搭建实验拓扑图 实验开始 配置PC1 配置PC2 配置PC3 划分vlan 将sw1划分到vlan3 [sw1]interface e0/0/2 [sw1-Ethernet0/0/2]port link-type access [sw1-Ethernet0/0/2]port default vlan 3 将sw3划分到vlan4 [sw3]interface e0/0/2 [sw3-Ethernet0/0/2]port link-type a…

多数据源组件dynamic-datasource使用总结

简介 dynamic-datasource-spring-boot-starter 是一个基于springboot的快速集成多数据源的启动器。 其支持 Jdk 1.7, SpringBoot 1.5.x 2.x.x 3.x.x。 特性 支持 数据源分组 &#xff0c;适用于多种场景 纯粹多库 读写分离 一主多从 混合模式。支持数据库敏感配置信息 加密…

小迪安全23WEB 攻防-Python 考点CTF 与 CMS-SSTI 模版注入PYC 反编译

#知识点&#xff1a; 1、PYC 文件反编译 2、Python-Web-SSTI 3、SSTI 模版注入利用分析 各语言的SSIT漏洞情况&#xff1a; SSIT漏洞过程&#xff1a; https://xz.aliyun.com/t/12181?page1&time__1311n4fxni0Qnr0%3DD%2FD0Dx2BmDkfDCDgmrYgBxYwD&alichlgrefhtt…

【C++】wxWidgets编程的程序入口点

在wxWidgets中&#xff0c;程序的入口点通过wxIMPLEMENT_APP宏定义来设置&#xff0c;该宏会扩展为一个实现了main函数或者在Windows上是WinMain函数的代码。wxIMPLEMENT_APP宏与wxDECLARE_APP宏一起使用来设置基于wxWidgets的应用程序的启动代码。 使用wxIMPLEMENT_APP宏通常是…

vue实现在线Excel表格功能

目录 1.安装x-data-spreadsheet xlsx 2.引入 3.使用 1.安装x-data-spreadsheet xlsx npm i x-data-spreadsheet xlsx2.引入 import zhCN from "x-data-spreadsheet/src/locale/zh-cn"; import Spreadsheet from "x-data-spreadsheet"; import * as X…

利用sqlmap探测get类型注入

环境准备:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 基础:GET基于报错的sql注入利用-脱库-CSDN博客 sqlmap 工具是kali自带的 例子我都用sql靶场的第一关做演示 1、探测数据库名 sqlmap -u "http://192.168.0.103/sqlilab…

Redis配置类,序列化

解释说明&#xff1a; 当前配置类不是必须的&#xff0c;因为 Spring Boot 框架会自动装配 RedisTemplate 对象&#xff0c;但是默认的key序列化器为JdkSerializationRedisSerializer&#xff0c;导致我们存到Redis中后的数据和原始数据有差别 如&#xff1a; 但是取是可以取出…

【免费】幻兽帕鲁Palworld服务器创建、32人专用服务器搭建

创建幻兽帕鲁服务器1分钟部署教程&#xff0c;阿里云和腾讯云均推出幻兽帕鲁服务器服务器和部署教程&#xff0c;4核16G和4核32G配置可选&#xff0c;阿腾云atengyun.com分享1分钟自建幻兽帕鲁Palworld服务器教程&#xff1a; 幻兽帕鲁服务器创建教程 幻兽帕鲁服务器官方推荐…

【Java网络编程03】网络原理进阶

【Java网络编程03】网络原理进阶 1. UDP协议 1.1 基本介绍 我们首先再来回顾UDP协议的基本特点&#xff1a; 无连接的不可靠传输的面向数据报的全双工的 既然谈到数据报&#xff0c;我们就来看一下UDP数据报的格式&#xff1a; UDP数据报分为报头和载荷部分&#xff0c;其…

网络协议与攻击模拟_09部署DHCP服务器

一、部署DHCP服务器 Windows server部署DHCP服务器 1、虚拟机网络架构理解 Vmware里面不同的虚拟机可以设置相同的Vmnet网络&#xff0c;也可以设置不同的Vmnet网络。两台虚拟机设置相同的Vmnet1网卡&#xff0c;可以看作为使用虚拟交换机将两台Vmnet1的虚拟机连接起来的。 …

OSPF协议解析及相关技术探索(C/C++代码实现)

OSPF&#xff08;开放最短路径优先&#xff09;是一种用于自治系统&#xff08;AS&#xff09;内部的路由协议&#xff0c;它是基于链路状态算法的。OSPF的设计目的是为了提供一种可扩展、快速收敛和高效的路由解决方案。 OSPF概念和特点 概念 自治系统&#xff08;AS&#…

基于Docker、Minikube在PC端构建K8S试验环境

在桌面电脑上使用Docker和Minikube构建Kubernetes&#xff08;K8S&#xff09;试验环境&#xff0c;为学习和测试提供了一个理想的平台。Docker的容器化技术允许在隔离的环境中运行应用&#xff0c;而Minikube则简化了在单节点上部署和管理Kubernetes集群的过程。这种组合使得个…

Apache 辅助系统工具

一丶Apache Sqoop 1.Sqoop的介绍&#xff1a; Sqoop的工作机制是将导入或者导出的命令翻译成MapReduce实现&#xff0c;Sqoop可以理解为&#xff1a;SQL到Hadoop或者Hadoop到SQL 2.Sqoop的安装 配置文件修改&#xff1a; cd $SQOOP_HOME/conf mv sqoop-env-template.sh sqo…

C语言第八弹---一维数组

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 一维数组 1、数组的概念 2、⼀维数组的创建和初始化 2.1、数组创建 2.2、数组的初始化 2.3、数组的类型 3、⼀维数组的使用 3.1、数组下标 3.2、数组元素…