C++ 关于最大连续子序列(和最大)问题
来源:互联网 发布:大众点评源码 编辑:程序博客网 时间:2024/05/21 13:21
/* 江伟浚Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 17458 Accepted Submission(s): 7701Problem Description给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 <= i <= j <= K。最大连续子序列是所有连续子序列中元素和最大的一个, 例如给定序列{ -2, 11, -4, 13, -5, -2 },其最大连续子序列为{ 11, -4, 13 },最大和 为20。 在今年的数据结构考卷中,要求编写程序得到最大和,现在增加一个要求,即还需要输出该 子序列的第一个和最后一个元素。Input测试输入包含若干测试用例,每个测试用例占2行,第1行给出正整数K( < 10000 ),第2行给出K个整数,中间用空格分隔。当K为0时,输入结束,该用例不被处理。Output对每个测试用例,在1行里输出最大和、最大连续子序列的第一个和最后一个元 素,中间用空格分隔。如果最大连续子序列不唯一,则输出序号i和j最小的那个(如输入样例的第2、3组)。若所有K个元素都是负数,则定义其最大和为0,输出整个序列的首尾元素。 Sample Input6-2 11 -4 13 -5 -210-10 1 2 3 4 -5 -23 3 7 -2165 -8 3 2 5 01103-1 -5 -23-1 0 -20Sample Output20 11 1310 1 410 3 510 10 100 -1 -20 0 0 (最后一组数据有误)*/#include <iostream>using namespace std;int main(){ int a[200] = {0}; // 数组a记录整数序列 // count记录负数个数 // max 最大和 max_f 最大和最前端 max_l最大和最后端 int n, i, j, s, count, max, max_f, max_l; // 以输入作为循环条件实现多组数据的输入 while(cin>>n) { if( n == 0 ) return 0; // 特殊情况的判断 count = 0; for( i = 0; i < n; ++i ) { cin>>a[i]; if( a[i] < 0 ) count++; //记录负数个数 } if(count == n) { max = 0; max_f = a[0]; max_l = a[n-1]; } // 大多数情况的操作 else { max = a[0];max_f = a[0];max_l = a[0]; for( i = 0; i < n; ++i ) { //从a[0]开始计算各情况 s = a[i]; // 算法 可草稿推演 for( j = i+1; j < n; ++j ) { s += a[j]; //寻找最大 if(s>max) { max = s; max_f = a[i]; max_l = a[j]; } } } } // 输出结果 cout<<max<<" "<<max_f<<" "<<max_l<<endl; } return 0;}
1 0
- C++ 关于最大连续子序列(和最大)问题
- 关于最大连续子序列问题
- 关于求最大连续子序列 和 问题
- 最大连续子序列和的问题
- 连续子序列最大和问题
- 连续子序列和最大问题
- 最大连续子序列和 问题
- 最大连续子序列问题
- 最大连续子序列问题
- 经典 - 最大和/最大积连续子序列问题
- [数据结构]连续子序列最大和,最大积的问题
- 连续子序列最大和
- 最大连续子序列和
- 最大连续子序列和
- 最大连续子序列和
- 最大连续子序列和
- 最大连续子序列和
- 最大连续子序列和
- Ubuntu安装新的内核
- 穿越计算机的迷雾总结
- IOS_压缩图片UIImage
- 导入已有工程的包
- 基本SQL语句
- C++ 关于最大连续子序列(和最大)问题
- 集体智慧编程(四)优化
- 51nod1084(双线程dp)
- 马虎的算式
- 算导--6.5-9使用最小堆完成k路归并问题
- jquery实现图片自动轮播
- JSP的四种属性范围
- C++学了这么多年,你也许不知道为什么类定义要放在.h文件,类实现放在cpp文件。它们如何关联?
- Hadoop2.5.2集群配置(基于VMware虚拟机)