HDU-1231(求最大序列和)
来源:互联网 发布:字符串数组赋值 编辑:程序博客网 时间:2024/05/29 04:14
都快晕死了,,,本来以为改来改去是改不正确的...
没想到居然改正确了,,真心崩溃了- -#
0(n)的算法
贴出代码:
#include <stdio.h>#include <string.h>#include <iostream>#include <string>//#define max(a, b) (a) > (b) ? a : b using namespace std;int a[11111];int s[11111];int n;int best;int start, end;int Solve(){s[0] = 0;int min = a[1];best = a[1];for (int i = 1; i <= n; i++){s[i] = s[i - 1] + a[i];}int MIN;for (int j = 2; j <= n; j++){if (best < s[j] - min){best = s[j] - min;end = j;MIN = min;}if (s[j] <= min){min = s[j];}//cout << "start = " << start << " " << "end =" << end << endl;//cout << "best = " << best << endl;}for (int i = 1; i <= n; i++){if (s[i] == MIN){start = i;}} return best;}int main(){while (scanf("%d", &n) != EOF){start = end = 1;//memset(s, 0, sizeof(0));if (n == 0){break;}best = -1111111111; int flag = 0;for (int i = 1; i <= n; i++){scanf("%d", &a[i]);if (a[i] >= 0){flag = 1;}}if (n == 1){printf("%d %d %d\n", a[1], a[1], a[1]);continue;}if (flag == 0){printf("0 %d %d\n", a[1], a[n]);continue;}int ans = Solve();if (ans == 0){printf("0 0 0\n");}else{printf("%d %d %d\n", ans, a[start + 1], a[end]);}}//system("pause");return 0;}
- HDU-1231(求最大序列和)
- hdu 1003 求最大子序列和
- hdu 1003 求最大子序列和
- HDU--1231 : 最大连续子序列 (DP求连续子序列最大和)
- hdu 1003 Max Sum (求最大子序列和)
- 求最大子序列和
- 求序列最大连续和
- 求最大子序列和
- 求最大子序列和
- dp求最大和序列
- 求最大子序列和
- 求最大和子序列
- 求最大和子序列
- 求最大子序列和
- 求最大子序列和
- 求最大子序列和
- 求最大子序列和
- 求最大子序列和
- Shlwapi
- Android完全退出应用程序,Activity自定义管理栈
- CWnd与HWND的区别和获取方法
- WinINet请求过程
- 使用 Yocto Project 构建自定义嵌入式 Linux 发行版
- HDU-1231(求最大序列和)
- DirectShow笔记——graphedt.exe崩溃的问题
- Java排序算法
- 数据迁移:数据库软件安装
- 树莓派设置静态IP记录(整理)
- java jdk & java api 帮助文档(中文、英文版)
- USB 基本知识
- c#渐变效果的窗体背景
- java开源框架集成常见错误之Cannot find bean under name org.apache.struts.taglib.html.BEAN