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级开发过程:

     

  • 相关阅读:
    内容绘制到Bitmap上不成功警示
    一些c++面试题目
    Windows Socket 主要API功能
    面试问题(一)
    函数指针与指针函数
    机器学习和数据挖掘的网站
    vs2010打开vs2008程序出现错误
    MATLAB将矩阵使用.txt文件格式保存
    指针实现值交换
    堆与栈的区别
  • 原文地址:https://www.cnblogs.com/zhs20160715/p/9783467.html
Copyright © 2011-2022 走看看