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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 天猫收不到退款金额怎么办 页面卡住不动了怎么办 电脑页面不动了怎么办 电脑页面点不动怎么办 还呗还款失败怎么办 省呗还款失败怎么办 手机百度云和谐怎么办 服务器连接不上怎么办 微粒贷请求失败怎么办 房子里手机信号不好怎么办 屋里上网没信号怎么办 屋子里面没信号怎么办 crm服务器关机了怎么办 日本代金券诈骗怎么办 发票已认证 作废怎么办 淘宝不发发票怎么办 ipd密码忘记了怎么办 apple id闪退怎么办 信用卡持卡人死亡欠款怎么办 信用卡名字错了怎么办 ios超出手机内存怎么办 app id停用了怎么办 相机储存空间不足怎么办 苹果icloud8满了怎么办 红米云空间已满怎么办 忘记手机密码怎么办oppo oppo云相册丢失怎么办 oppoa79密码忘了怎么办 云存储空间满了怎么办 云备份空间不足怎么办 安卓没有中文怎么办 燃气表显示异常怎么办 is语音登录不了怎么办 is语音禁止登录怎么办 淘宝竞争不过同行怎么办 碰到比价的顾客怎么办 淘宝同行恶意捣乱怎么办 怀孕吃了打虫药怎么办 阿迪鞋微信中签不能取怎么办 康乃馨花叶长斑怎么办 杜鹃花叶长斑怎么办