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 基础的动态规划算法 挑战程序设计竞赛相关推荐

  1. poj2385 基础的动态规划算法 挑战程序设计竞赛

    2018-2-5 基本的动态规划算法,不知道自己为什么WA,很是绝望,于是只是把代码贴一下? #include<iostream> #include<cstring> usin ...

  2. poj2229 基础的动态规划算法 挑战程序设计竞赛

    2018-2-2 首先我们不难看出: 当n为奇数时,dp[n]=dp[n-1],因为它无论如何都会有1在里面. 当n为偶数时,我们通过题意可以看出,它的序列是无序的,换言之,1,1,2和2,1,1是相 ...

  3. 《挑战程序设计竞赛》--初级篇习题POJ部分【动态规划】

    关于基本的动态规划和经典的动态规划,在之前已经总结过了,可以温习一下: 传送门 这次是延续上次的<挑战程序设计竞赛>初级篇,总结部分poj上的练习题,主要是DP方面的练习题: 一.基础的动 ...

  4. 《挑战程序设计竞赛》推荐及算法相关书籍吐槽

    前几天,秋叶拓哉(iwi).岩田阳一(wata)和北川宜稔(kita_masa)所著,我(watashi).庄俊元(navi)和李津羽(itsuhane)翻译的<挑战程序设计竞赛>,终于通 ...

  5. 【操作指导 | 代码实现】挑战程序设计竞赛2:算法和数据结构

    书籍封面 第一章 前言 1. 本人衷心建议 ~~~~~~       如果你是一位初学者,我指的是你只会基本的 C/C++ 编程,即使编的很烂,这本书对于你算法和数据结构的提升非常有帮助,所涉及的每一 ...

  6. koch算法c语言递归,【挑战程序设计竞赛】 递归与分治算法

    [挑战程序设计竞赛] 递归与分治算法 [挑战程序设计竞赛] 递归与分治算法 递归与分治算法穷举搜索题目 思路 代码 科赫曲线题目 思路 代码 将问题分解,通过求解局部性的小问题来解决原本的问题,这种技 ...

  7. 《挑战程序设计竞赛(第2版)》习题册攻略

    本项目来源于GitHub 链接: 项目GitHub链接 1 前言 项目为<挑战程序设计竞赛(第2版)>习题册攻略,已完结.可配合书籍或笔记,系统学习算法. 题量:约200道,代码注释内含详 ...

  8. 挑战程序设计竞赛(第2版)》

    <挑战程序设计竞赛(第2版)> 基本信息 作者: (日)秋叶拓哉 岩田阳一 北川宜稔 译者: 巫泽俊 庄俊元 李津羽 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9787 ...

  9. 《挑战程序设计竞赛》 读后感(转载)

    <挑战程序设计竞赛> 读后感 最近要开始准备面试找工作,算法是准备的重中之重,舍友推荐了<挑战程序设计竞赛>这本书.花了一周的时间大体过了一遍,该书真切地让我理解了" ...

最新文章

  1. HTML之媒体元素[音频 视频]
  2. Linux中的文件搜索 locate,find,grep ,whereis和which命令的使用
  3. Arduino笔记-人体热释电外传感器使用
  4. 复制:王垠:数学和编程
  5. 使用Canvas扩展绘制动态ASP.NET Core Blazor气泡图
  6. django03_表单(forms.ModelForm)(login前后台)
  7. 快速掌握用python写并行程序设计_Python中的并行编程速度
  8. 千千静听音效插件使用方法(激烈经典)
  9. GhostNet 详解
  10. OverView J2ee Architecture 综述J2ee架构
  11. 手机kindle导入本地书_别再说不会用手机传书至Kindle了,方法都在这儿!
  12. k8s——Kubernetes配置yaml文件详解
  13. F1摩托艇大赛(Shawn报道)
  14. 电商创业的五大新模式
  15. vue单页面怎么做SEO优化
  16. AMD发布22.9.2驱动,支持《禁闭求生(Grounded)》
  17. Oracle 监听器无法启动(TNS-12555,TNS-12560,TNS-00525)启动监听器无法打开,报错!
  18. python中使用大写字母来分割字符串
  19. 2018 Mossad Challenge
  20. Hastelloy C-276 (UNS N10276)含钨的镍-铬-钼合金

热门文章

  1. python堆栈与队列_python语言的堆栈与队列类的实现
  2. 博士出身好科研产出高,学术谱系真的可以决定一切吗?
  3. 哈佛大学教授刘小乐:我与生物信息学的不解之缘
  4. 服务器硬盘raid5扩容,超实用,物理服务器RAID扩容详解
  5. 1.7 编程基础之字符串 34 回文子串 python
  6. c语言程序命令行,ttyd(C语言编写的命令行程序) v1.3.1 免费版
  7. awk 匹配_linux的awk命令详解,通俗易懂
  8. ThinkPHP6项目基操(6.数据库Db操作)
  9. requirejs插件-domReady插件
  10. tablueau地图标记圆形_高德地图实现自定义小蓝点 自定义点标记 绘制多边形/圆形区域 根据地图的移动显示或者隐藏自定义点标记的相关实现...