poj-1163 动态规划
这道题目并不能直接使用递归,因为
7(1)
7(1) 7(1)
7(1) 7(2) 7(1)
7(1) 7(3) 7(3) 7(1)
7(1) 7(4) 7(6) 7(4) 7(1)
假设题目中的数据是这样子的,小括号内代表着每个数被递归调用的次数。
这个三角实际上是一个杨辉三角,它的和为 2^n -2 ,题目中的层数大小是100以内,那最大的话就要算到 2^100 ,
这已经不是超时的问题了,汗颜。
那怎么办呢?我们只需要将每次用到的值它的最大值存起来,等着返回的时候,让上层的递归直接使用就可以了。
这样的话复杂度就是等差数列,就是n(n-1)/2,所以这次就不用等到宇宙毁灭了。
#include <iostream>
#include <algorithm>
#define MAX 101
using namespace std;
int n,D[MAX][MAX];
int maxsum[MAX][MAX];
int MaxSum(int i,int j)
{
if (maxsum[i][j]!=-1) {
return maxsum[i][j];
}
if (i==n) {
maxsum[i][j]=D[i][j];
}
else {
int x=MaxSum(i+1,j);
int y=MaxSum(i+1,j+1);
maxsum[i][j]=max(x,y)+D[i][j];
}
return maxsum[i][j];
}
int main()
{
int i,j;
cin>>n;
for (int i=1;i<=n;i++) {
for (int j=1;j<=i;j++) {
cin>>D[i][j];
maxsum[i][j]=-1;
}
}
cout<<MaxSum(1,1)<<endl;
return 0;
}
poj-1163 动态规划的更多相关文章
- poj 1163 The Triangle &poj 3176 Cow Bowling (dp)
id=1163">链接:poj 1163 题意:输入一个n层的三角形.第i层有i个数,求从第1层到第n层的全部路线中.权值之和最大的路线. 规定:第i层的某个数仅仅能连线走到第i+1层 ...
- POJ 1163 The Triangle(简单动态规划)
http://poj.org/problem?id=1163 The Triangle Time Limit: 1000MS Memory Limit: 10000K Total Submissi ...
- POJ - 1163 The Triangle 【动态规划】
一.题目 The Triangle 二.分析 动态规划入门题. 状态转移方程$$DP[i][j] = A[i][j] + max(DP[i-1][j], DP[i][j])$$ 三.AC代码 1 #i ...
- POJ 1163 The Triangle【dp+杨辉三角加强版(递归)】
The Triangle Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 49955 Accepted: 30177 De ...
- OpenJudge/Poj 1163 The Triangle
1.链接地址: http://bailian.openjudge.cn/practice/1163 http://poj.org/problem?id=1163 2.题目: 总时间限制: 1000ms ...
- POJ 1163 The Triangle 简单DP
看题传送门门:http://poj.org/problem?id=1163 困死了....QAQ 普通做法,从下往上,可得状态转移方程为: dp[i][j]= a[i][j] + max (dp[i+ ...
- nyoj 17-单调递增最长子序列 && poj 2533(动态规划,演算法)
17-单调递增最长子序列 内存限制:64MB 时间限制:3000ms Special Judge: No accepted:21 submit:49 题目描述: 求一个字符串的最长递增子序列的长度 如 ...
- POJ 1163 数字三角形
Portal:http://poj.org/problem?id=1163 DP经典题,IOI94考题,在各大OJ上都有 #include<iostream> #include<al ...
- poj 3034 动态规划
思路:这是一道坑爹的动态规划,思路很容易想到,就是细节. 用dp[t][i][j],表示在第t时间,锤子停在(i,j)位置能获得的最大数量.那么只要找到一个点转移到(i,j)收益最大即可. #incl ...
- poj 2498 动态规划
思路:简单动态规划 #include<map> #include<set> #include<cmath> #include<queue> #inclu ...
随机推荐
- POJ3258【二分】
题意: 问一个河岸,两岸之间有笔直的n块石头,然后拔起(也可以施展魔法)m个石块,假设两岸也是石块,求处理过的石块的最小距离的最大. 思路: 他让我们求移开m个石块,无非是在n+2-m(已经把两岸看成 ...
- MySQL的分支
1.MariaDB MariaDB数据库管理系统是 MySQL 的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MyS ...
- bzoj 4530: [Bjoi2014]大融合【LCT】
新姿势,一般来讲LCT只能维护splay重边里的数据,而这里要求维护整颗子树的size 多维护一个sq表示当前点轻儿子的size和,si表示包括轻重边的整颗子树的大小 然后需要改sq的地方是link和 ...
- 关于Page翻页效果, PageViewConrtoller
Page View Controllers你使用一个page view controller用page by page的方式来展示内容.一个page view controller管理一个self-c ...
- Luogu P1463 [POI2002][HAOI2007]反素数【数论/dfs】By cellur925
题目传送门 题目描述 对于任何正整数x,其约数的个数记作g(x).例如g(1)=1.g(6)=4. 如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数.例如,整数1 ...
- 18.3.2从Class上获取信息(构造器)
获取构造器信息 package d18_3_1; import java.lang.reflect.Constructor; import java.util.Arrays; /** * 获取构造器的 ...
- 自己写的MD5加密原码
package com.wh.md5; import java.security.MessageDigest; import java.util.Arrays; /** * @author 王恒 * ...
- debug授权码
www.vfxcx.com 704835b5c54b56426257e0742568fe54
- 【转】JobScheduler
JobScheduler JobScheduler是Android L(API21)新增的特性,用于定义满足某些条件下执行的任务.它的宗旨是把一些不是特别紧急的任务放到更合适的时机批量处理,这样可以有 ...
- 4. iOS测试常用方法
1. [XCUIElement exists]方法只能确定这个View是否存在,即使不在当前屏幕上也返回True.如果要确定View是否在屏幕可见范围内,可以判断其Frame是否在Window的 ...