zoukankan      html  css  js  c++  java
  • 课堂练习

    代码调试出来了,时间复杂度为O(n),只是不知道为什么输出子序列的时候有时候无法输出,在这里请教各位大神啊,在这里面算法思想是这样的,如果当前序列加到小于零了则直接舍去前面的,其中要知道只要前几位是负数,则一定不是最大子序列,

     1 #include<iostream>
     2 #include<ctime>
     3 #include<stdlib.h>
     4 using namespace std;
     5 void main()
     6 {
     7     long int begin;//子序列的开头
     8     long int end;//子序列的结尾
     9     int newsum;//当前子序列最大值
    10     int maxsum;//子序列最大值
    11     srand((unsigned)time(NULL));//生成随机数
    12     int a[1000], i, n;
    13     /*begin = 0;
    14     end = 0;*/
    15     newsum = 0;//初始化
    16     maxsum = a[0];//初始化
    17     cout << "请输入数组里面包含数的个数:" << endl;
    18     cin >> n;
    19     for (i = 0; i < n; i++)
    20     {
    21         a[i] = rand() % 21 - 10;
    22     }
    23     cout << "数组a[" << n << "]为:";
    24     for (i = 0; i < n; i++)
    25     {
    26         cout << a[i] << " ";
    27     }
    28     cout << endl;
    29 
    30     for (i = 0; i<n; i++)//开始循环求子序列和
    31     {
    32         newsum = newsum + a[i];
    33         if (newsum > maxsum)//更新当前子序列的和
    34         {
    35             maxsum = newsum;
    36             end = i;
    37         }
    38         if (newsum < 0)//假若当前子序列和为负,则舍弃
    39         {
    40             begin = i + 1;
    41             newsum = 0;
    42 
    43         }
    44     }
    45     cout << "最大的子序列和为:" << maxsum << endl;
    46     cout << "最大的序列为:";
    47     for (long int k = begin; k <= end; k++)
    48     {
    49         cout << a[k] << " ";
    50     }
    51     cout << endl;
    52 
    53 }

  • 相关阅读:
    软件设计师考试知识点总结
    HTML和CSS
    JavaScript核心知识点
    操作系统--页面置换算法(缺页数计算)
    中标麒麟系统远程桌面连接
    数据结构 图
    数据结构 二叉树
    MATLAB 大数据剔除坏值
    PTA 邻接表存储图的广度优先遍历(20 分)
    PTA 邻接矩阵存储图的深度优先遍历
  • 原文地址:https://www.cnblogs.com/chengchengshuaio/p/4359308.html
Copyright © 2011-2022 走看看