Maximum Subsequence Sum【PAT 1007题】---简单的动态规划
来源:互联网 发布:linux系统克隆 编辑:程序博客网 时间:2024/06/13 21:52
最大连续子序列和,动态规划的简单题,其实这个题不用动态规划的方法去理解算法也很简单,用sum存储遍历途中遇到的当前最大和,用temp存储当前处理的子序列和,如果temp>=0,则访问a[i]时,temp += a[i],但若temp是小于0的,则加上a[i]以后定然小于a[i],所以直接把temp更新为a[i],访问一个新的子序列,如果temp大于sum,则更新sum,以上就是解题思路,由于题目中要求求出最大和的同时,记录下相应子序列的首尾元素值,若序列全是负数,则最大和定义为0,首尾定义为整个序列的首尾值,所以程序中需要增加一些变量以存储以上信息.
#include <stdio.h>#include <stdlib.h>int main(){ int k; int *data; int i; int start, end, sum, temp, tempi, tempj; while(scanf("%d", &k) != EOF) { data = (int *)malloc(k * sizeof(int)); for(i = 0; i < k; i ++) { scanf("%d", &data[i]); } sum = 0; start = 0; end = k - 1; temp = 0; tempi = 0; tempj = 0; for(i = 0; i < k; i ++) { if(temp >= 0) { temp += data[i]; tempj = i; } else { temp = data[i]; tempi = i; tempj = i; } if(temp > sum || (temp == 0 && end == k - 1))//temp确实比sum大, 或者, sum依然是初始状态(end == k-1即表示)而且temp==0, 需要替换 { sum = temp; start = tempi; end = tempj; } } printf("%d %d %d\n", sum, data[start], data[end]); } return 0;}
原文链接:http://www.cnblogs.com/Rafy/archive/2012/03/17/2403091.html
0 0
- Maximum Subsequence Sum【PAT 1007题】---简单的动态规划
- 1007. Maximum Subsequence Sum (25) PAT+动态规划
- PAT 1007. Maximum Subsequence Sum (25)(dp动态规划)
- 1007. Maximum Subsequence Sum (25)-PAT甲级真题(动态规划dp)
- pat 1007 Maximum Subsequence Sum
- pat 1007 Maximum Subsequence Sum
- 1007. Maximum Subsequence Sum (25) -- 动态规划
- PAT - Maximum Subsequence Sum
- 浙大PAT 1007题 1007. Maximum Subsequence Sum
- PAT Advanced Level 1007:Maximum Subsequence Sum
- PAT 1007(甲级)Maximum Subsequence Sum
- pat a 1007 Maximum Subsequence Sum
- (PAT)1007. Maximum Subsequence Sum
- (PAT)1007. Maximum Subsequence Sum
- pat 1007. Maximum Subsequence Sum
- PAT 1007. Maximum Subsequence Sum
- PAT Maximum Subsequence Sum (25)
- PAT 1007. Maximum Subsequence Sum
- UVA - 10306 e-Coins
- PE 6 Sum square difference
- 1068. Find More Coins (30)
- hrbust 1161 树状数组模版
- 【计算机基础】 常用的排序算法的时间复杂度和空间复杂度
- Maximum Subsequence Sum【PAT 1007题】---简单的动态规划
- (二)yii使用原生html不使用yii生成html表单如何忽略m层验证无法通过
- js深层次知识点
- Mysql主从复制总结
- hrbust 1400 排序+求逆序
- 班级主页代码
- QT点击按钮实现按钮名的改变
- Python 网页爬虫 & 文本处理 & 科学计算 & 机器学习 & 数据挖掘兵器谱
- 取整求和 (codeforce )