练习三 1001
2016-05-03 16:13
239 查看
概述:求最大字段和,d[i]表示已
i 结尾(字段和中包含 i )在 a[1..i] 上的最大和。
思路:利用递推公式d[i]=(d[i-1]+a[i]>a[i])?d[i-1]+a[i]:a[i];max = {d[i],1<=i<=n} 即可
感想:第一题。
i 结尾(字段和中包含 i )在 a[1..i] 上的最大和。
思路:利用递推公式d[i]=(d[i-1]+a[i]>a[i])?d[i-1]+a[i]:a[i];max = {d[i],1<=i<=n} 即可
感想:第一题。
#include <iostream> using namespace std; int get(int data[] , int &l , int &r , int dl) { int max = -10000000 ; l = 0 ; r = 0 ; int t = 1 ; int mt = 0 ; for(int i = 0 ; i < dl ; i++) { mt = mt +data[i]; if(mt > max) { max = mt; l = t ; r = i+1 ; } if(mt < 0) { mt = 0 ; t = i+2 ; } } return max ; } int main() { int num ; cin >> num ; for(int k = 1 ; k <= num ;k++) { int lg = 0 ; cin >>lg ; int * data = new int[lg]; for(int i =0 ;i < lg ; i++) { cin >>data[i]; } int l = 0 , r = lg-1 ; int max = 0 ; max = get(data , l , r , lg); cout<<"Case "<<k<<":"<<endl; cout<<max<<" "<<l<<" "<<r<<endl; if(k!=num) cout<<endl; } return 0 ; }
相关文章推荐
- C++动态规划之最长公子序列实例
- C++动态规划之背包问题解决方法
- C#使用动态规划解决0-1背包问题实例分析
- 详解Android应用中屏幕尺寸的获取及dp和px值的转换
- 基于Android中dp和px之间进行转换的实现代码
- Android中dip、dp、sp、pt和px的区别详解
- 简单的四则运算
- 数的奇偶性
- ACMer博客瀑布流分析
- LFC1.0.0 版本发布
- 动态规划
- ACM程序设计大赛题目分类
- 计算字符串最后一个单词长度
- C++ 动态规划
- Android px、dp、sp之间相互转换
- ACM网址
- 1272 小希的迷宫
- 1272 小希的迷宫
- hdu 1250 大数相加并用数组储存
- HP data protector软件学习1--基本角色与基本工作流程