51nod 1002 数塔取数问题
来源:互联网 发布:宿迁装修公司知乎 编辑:程序博客网 时间:2024/04/29 13:18
51nod 1002 数塔取数问题
取左上,和上方大的,加上此数即可。
#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>#include <queue>#include <map>using namespace std;#define LL long long#define INF 0x3f3f3f3f#define PI acos(-1.0)#define E 2.71828#define MOD 1000000007#define N 510#define M 5010int p[N][N];int dp[N][N];int main(){ int n; scanf("%d",&n); for(int i = 1; i <= n; i++) for(int j = 1; j <= i; j++) scanf("%d",&p[i][j]); dp[1][1] = p[1][1]; for(int i = 2; i <= n; i++) { for(int j = 1; j <= i; j++) { if(j == 1) dp[i][j] = dp[i-1][j]+p[i][j]; else if(j == i) dp[i][j] = dp[i-1][j-1]+p[i][j]; else dp[i][j] = max(dp[i-1][j],dp[i-1][j-1])+p[i][j]; //printf("%5d",dp[i][j]); } } int maxn = 0; for(int i = 1; i <= n; i++) if(dp[n][i] > maxn) maxn = dp[n][i]; printf("%d\n",maxn);}过一发后,优化下空间!虽然貌似并没啥软用,图空间还是V^2。。。int p[N][N];int dp[N];int main(){ int n; scanf("%d",&n); for(int i = 1; i <= n; i++) for(int j = 1; j <= i; j++) scanf("%d",&p[i][j]); dp[1] = p[1][1]; for(int i = 2; i <= n; i++) { for(int j = 1; j <= i; j++) { int next; if(j == 1) { next = dp[j]; dp[j] = dp[j]+p[i][j]; } else if(j == i) dp[j] = next+p[i][j]; else { int temp = dp[j]; dp[j] = max(dp[j],next)+p[i][j]; next = temp; } //printf("%5d",dp[j]); } puts(""); } int maxn = 0; for(int i = 1; i <= n; i++) if(dp[i] > maxn) maxn = dp[i]; printf("%d\n",maxn);}
0 0
- 51Nod 1002 数塔取数问题
- 51 nod 1002 数塔取数问题
- 51nod 1002 数塔取数问题
- 51nod:1002 数塔取数问题
- 51nod 1002 数塔取数问题
- 51nod-【1002 数塔取数问题】
- 51nod 1002 数塔取数问题
- 51Nod 1002 数塔取数问题
- 51nod 1002 数塔取数问题
- 1002 数塔取数问题 51NOD
- 51nod 1002 数塔取数问题
- 51nod 1002 数塔取数问题
- 51Nod 1002 数塔取数问题
- 【51Nod】1002 数塔取数问题
- 51Nod--1002 数塔取数问题
- 51Nod 1002 数塔取数问题
- 51nod 1002 数塔取数问题
- 51nod 1002 数塔取数问题
- c++知识复习8.0
- storm对网站有关数据的统计以及多线程问题探讨
- 设置Eclipse中Maven编译的JDK版本
- Spark性能优化指南——基础篇
- 链表节点以及数组元素的删除
- 51nod 1002 数塔取数问题
- 微信精选阅读器
- JUnit4
- hdu ---2017做题笔记(c)
- Kali Linux 秘籍 第六章 漏洞利用
- 第六周【项目三-负数把正数赶出队列 】
- C++实现简单计算器功能
- c语言动态存储分配
- 编译V8