zoukankan      html  css  js  c++  java
  • 最大子数组和 10.11作业

    设计思想:

    在上次求最大子数组的基础上,增加一个求随机数的子函数,并且利用将随机数对2求余的方法,产生正、负数。
    对随机数函数的取值范围进行控制,控制在int32范围内。
    对代码进行运行和调试。
    经过上面的思路和不断调试,可以产生1000个范围内的数并进行计算,求得最大子数组。

    源程序代码:

     1 #include<iostream> 
     2 #include<iostream> 
     3 #include<time.h> 
     4 #include<stdlib.h> 
     5 using namespace std; 
     6 #define NUM 1000 
     7 int DTGH_Sum(int a[],int n) 
     8 { 
     9     int sum = 0;
    10     int *b = (int *) malloc(n * sizeof(int)); 
    11     b[0] = a[0]; 
    12     for(int i = 1; i < n; i++) 
    13     { 
    14         if(b[i-1] > 0) 
    15             b[i] = b[i - 1] + a[i]; 
    16         else 
    17             b[i] = a[i]; 
    18     } 
    19     for(int j = 0; j < n; j++) 
    20     { 
    21         if(b[j] > sum) 
    22             sum = b[j]; 
    23     } 
    24     delete []b; 
    25     return sum; 
    26 } 
    27 
    28 int main()
    29 {
    30     int a[1005];
    31     srand((unsigned)time(NULL));
    32     int i;
    33     for (i = 0; i < 1000; i++)
    34     { 
    35          int t;
    36         t = rand()%2;
    37         if(t==1) t=-1;
    38         else t = 1;
    39         a[i] = rand() * t;
    40         cout<<rand()*t<<'	';
    41     } 
    42     cout<<"最大子段和:";
    43     cout<<DTGH_Sum(a,1000)<<endl; 
    44     return 0; 
    45 
    46 }

    运行结果截图

    当子数组和超出int32范围时,结果并不确定,以下为三种情况截图

    psp0级开发过程:

     

  • 相关阅读:
    [CQOI2009][BZOJ1303] 中位数图
    [JSOI2008][BZOJ1016] 最小生成树计数
    [SCOI2005][BZOJ1083] 繁忙的都市
    [HAOI2006][BZOJ2428] 均分数据
    [HAOI2008][BZOJ1054] 移动玩具
    [ZJOI2006][BZOJ1003] 物流运输trans
    AW241 楼兰图腾
    AW239 奇偶游戏
    AW244 谜一样的牛
    AW278 数字组合(0/1背包)
  • 原文地址:https://www.cnblogs.com/zhs20160715/p/9783467.html
Copyright © 2011-2022 走看看