poj3176 基础的动态规划算法 挑战程序设计竞赛
2018-2-2
最容易想到的一种,直接求解,后面会进行优化。
#include<iostream>
#include<cstring>
using namespace std;const int N = 350;
int x[N+1][N+1],dp[N+1][N+1];
int res,n;int main(){while (cin>>n){memset(x,0,sizeof(x));memset(dp,0,sizeof(dp));for (int i=1;i<=n;i++){for (int j=1;j<=i;j++){cin>>x[i][j];}}dp[1][1]=x[1][1];for (int i=2;i<=n;i++){for (int j=1;j<=i;j++){dp[i][j]=max(dp[i-1][j],dp[i-1][j-1])+x[i][j];}}res=0;for (int j=1;j<=n;j++){res=max(res,dp[n][j]);}cout<<res<<endl;}return 0;
}
我们观察上面的代码可以看出来,dp数组当前值只与上一行的dp数组值有关,所以我们只要记住上一行的状态即可,这里的dp换为一维也是可以的,但是我们存在一个需要注意的地方,如果j是从小到大的,那么我们的dp[j]就已经被上一步更新过了,就不是我们所需要的上一行的值了,所以这里的y是从大到小的。。。
#include<iostream>
#include<cstring>
using namespace std;const int N = 350;
int x[N+1][N+1],dp[N+1];
int res,n;int main(){while (cin>>n){memset(x,0,sizeof(x));memset(dp,0,sizeof(dp));for (int i=1;i<=n;i++){for (int j=1;j<=i;j++){cin>>x[i][j];}}dp[1]=x[1][1];for (int i=2;i<=n;i++){for (int j=i;j>=1;j--){dp[j]=max(dp[j-1],dp[j])+x[i][j];}}res=0;for (int i=1;i<=n;i++){res=max(res,dp[i]);}cout<<res<<endl;}return 0;
}
除此之外,我们更容易看出的应该是x数组是没有必要的,我们不需要对它进行存储。
#include<iostream>
#include<cstring>
using namespace std;const int N = 350;
int dp[N+1];
int res,n;int main(){while (cin>>n){memset(dp,0,sizeof(dp));for (int i=1;i<=n;i++){for (int j=i;j>=1;j--){int t;cin>>t;dp[j]=max(dp[j-1],dp[j])+t;}}res=0;for (int i=1;i<=n;i++){res=max(res,dp[i]);}cout<<res<<endl;}return 0;
}
poj3176 基础的动态规划算法 挑战程序设计竞赛相关推荐
- poj2385 基础的动态规划算法 挑战程序设计竞赛
2018-2-5 基本的动态规划算法,不知道自己为什么WA,很是绝望,于是只是把代码贴一下? #include<iostream> #include<cstring> usin ...
- poj2229 基础的动态规划算法 挑战程序设计竞赛
2018-2-2 首先我们不难看出: 当n为奇数时,dp[n]=dp[n-1],因为它无论如何都会有1在里面. 当n为偶数时,我们通过题意可以看出,它的序列是无序的,换言之,1,1,2和2,1,1是相 ...
- 《挑战程序设计竞赛》--初级篇习题POJ部分【动态规划】
关于基本的动态规划和经典的动态规划,在之前已经总结过了,可以温习一下: 传送门 这次是延续上次的<挑战程序设计竞赛>初级篇,总结部分poj上的练习题,主要是DP方面的练习题: 一.基础的动 ...
- 《挑战程序设计竞赛》推荐及算法相关书籍吐槽
前几天,秋叶拓哉(iwi).岩田阳一(wata)和北川宜稔(kita_masa)所著,我(watashi).庄俊元(navi)和李津羽(itsuhane)翻译的<挑战程序设计竞赛>,终于通 ...
- 【操作指导 | 代码实现】挑战程序设计竞赛2:算法和数据结构
书籍封面 第一章 前言 1. 本人衷心建议 ~~~~~~ 如果你是一位初学者,我指的是你只会基本的 C/C++ 编程,即使编的很烂,这本书对于你算法和数据结构的提升非常有帮助,所涉及的每一 ...
- koch算法c语言递归,【挑战程序设计竞赛】 递归与分治算法
[挑战程序设计竞赛] 递归与分治算法 [挑战程序设计竞赛] 递归与分治算法 递归与分治算法穷举搜索题目 思路 代码 科赫曲线题目 思路 代码 将问题分解,通过求解局部性的小问题来解决原本的问题,这种技 ...
- 《挑战程序设计竞赛(第2版)》习题册攻略
本项目来源于GitHub 链接: 项目GitHub链接 1 前言 项目为<挑战程序设计竞赛(第2版)>习题册攻略,已完结.可配合书籍或笔记,系统学习算法. 题量:约200道,代码注释内含详 ...
- 挑战程序设计竞赛(第2版)》
<挑战程序设计竞赛(第2版)> 基本信息 作者: (日)秋叶拓哉 岩田阳一 北川宜稔 译者: 巫泽俊 庄俊元 李津羽 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9787 ...
- 《挑战程序设计竞赛》 读后感(转载)
<挑战程序设计竞赛> 读后感 最近要开始准备面试找工作,算法是准备的重中之重,舍友推荐了<挑战程序设计竞赛>这本书.花了一周的时间大体过了一遍,该书真切地让我理解了" ...
最新文章
- HTML之媒体元素[音频 视频]
- Linux中的文件搜索 locate,find,grep ,whereis和which命令的使用
- Arduino笔记-人体热释电外传感器使用
- 复制:王垠:数学和编程
- 使用Canvas扩展绘制动态ASP.NET Core Blazor气泡图
- django03_表单(forms.ModelForm)(login前后台)
- 快速掌握用python写并行程序设计_Python中的并行编程速度
- 千千静听音效插件使用方法(激烈经典)
- GhostNet 详解
- OverView J2ee Architecture 综述J2ee架构
- 手机kindle导入本地书_别再说不会用手机传书至Kindle了,方法都在这儿!
- k8s——Kubernetes配置yaml文件详解
- F1摩托艇大赛(Shawn报道)
- 电商创业的五大新模式
- vue单页面怎么做SEO优化
- AMD发布22.9.2驱动,支持《禁闭求生(Grounded)》
- Oracle 监听器无法启动(TNS-12555,TNS-12560,TNS-00525)启动监听器无法打开,报错!
- python中使用大写字母来分割字符串
- 2018 Mossad Challenge
- Hastelloy C-276 (UNS N10276)含钨的镍-铬-钼合金
热门文章
- python堆栈与队列_python语言的堆栈与队列类的实现
- 博士出身好科研产出高,学术谱系真的可以决定一切吗?
- 哈佛大学教授刘小乐:我与生物信息学的不解之缘
- 服务器硬盘raid5扩容,超实用,物理服务器RAID扩容详解
- 1.7 编程基础之字符串 34 回文子串 python
- c语言程序命令行,ttyd(C语言编写的命令行程序) v1.3.1 免费版
- awk 匹配_linux的awk命令详解,通俗易懂
- ThinkPHP6项目基操(6.数据库Db操作)
- requirejs插件-domReady插件
- tablueau地图标记圆形_高德地图实现自定义小蓝点 自定义点标记 绘制多边形/圆形区域 根据地图的移动显示或者隐藏自定义点标记的相关实现...