hdu 2845 题解
来源:互联网 发布:js获取div下的class 编辑:程序博客网 时间:2024/04/29 06:33
hdu 2845 题解
题目大意:同一行里必须隔一个及以上个数来取数,行与行之间也是隔一行及以上。
题目解析:想要求得一行里能取到的最大和值可以通过动态转移方程
dp[i] = max(dp[i-1], dp[i-2] + a[i] ); 得到每行的最大值之后,就是开始求最后的结果,此时把得到的最大值数组再通过如上的转移方程得到最终结果。
二维动态用两次一维动态完成。能这么做的关键是行内数字间的关系和行间的关系达到高度的一致性。
代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
using namespace std;
int a[200005];
int b[200005];
int dp[200005];
int getDP(int b[], int len){
inti, j;
dp[0]= b[0];
dp[1]= b[1];
for(i = 1; i < len; i ++ ){
dp[i]= max( dp[i-1], dp[i-2]+b[i]);
}
returndp[len-1];
}
int main()
{
intm, n, i, j;
while(cin >> m >> n )
{
for( i = 0; i < m; i ++ ){
for( j = 0; j < n; j ++ ) {
cin>> b[j];
}
a[i]= getDP(b, n);
}
cout<<getDP(a,m)<<endl;
}
return0;
}
- hdu 2845 题解
- hdu 4602题解
- hdu 1789题解
- HDU 4665 题解
- HDU 4710题解
- HDU 4715题解
- hdu 1087题解
- hdu 2844题解
- hdu 4007题解
- hdu 4004题解
- hdu 1879题解报告
- HDU 2180 时钟 题解
- HDU 1425 sort 题解
- HDU 1015 Safecracker 题解
- HDU Computer Transformation1041 题解
- HDU 题解 1024
- hdu 4451Dressing题解
- hdu 5120 题解 Intersection
- 多态状态机
- ios7图片资源命名规则
- 利用git机制,联合dropbox管理自己的dotfiles
- 【NodeJS 学习笔记02】入门资源很重要
- 一篇关于youtube推荐算法的分享-基于用户行为的视频推荐
- hdu 2845 题解
- PIMPL机制
- [PostgreSQL] PG客户端调用sql脚本的两种方法
- 黑马程序员-高新技术-泛型
- [C/C++标准库]_[初级]_[查找内存数据中的指定值]
- Cocos2d-html5 实例无法正常加载资源
- mysql C++ wrapper
- Spring 配置Response自动转换为JSON
- Linux下Python 2.7 & easy_install 安装