zoukankan      html  css  js  c++  java
  • 返回一个整数数组中最大子数组的和

    1. 设计思想

    将一维循环数组采用遍历的方法来寻找最大子数组,将含n个数的循环数组依次从各个点断开,产生n个n个数组的单链数组,再遍历寻找最大子数组。

    2. 出现的问题

    整形数组的生成方式、

    3. 可能的解决方案

    整形数组随机生成,每个子数组的数据个数也是随机的。

    4. 源代码

    #include<iostream>
    using namespace std;

    int main()
    {
    int A[100], B[100], C[100];
    int max(int A, int B);
    int length = 0;//用来记录数组长
    int sumOfArray;//sumOfArray用于存放包含目前的子数组的和的最大值
    int sum = 0;//sum用来存放不包含当前数的所有子数组的和的最大值
    cout << "请输入数组:";
    for (length = 0;;)
    {
    cin >> A[length];
    length++;
    if (getchar() == ' ')
    {
    break;
    }
    }
    //这里做数组转换,每一次循环数组里的数就向前进一位,然后付给另一个数组
    for (int i = 0; i < length; i++)
    {
    for (int j = 0; j < length; j++)
    {

    if ((i + j) > (length-1))
    {
    B[j] = A[i + j - length];
    }
    else
    {
    B[j] = A[j + i];
    }
    }
    sumOfArray = B[0];
    for (int k = 1; k < length; k++)
    {
    sum = max(sum, sumOfArray);
    sumOfArray = max((sumOfArray + B[k]), B[k]);

    }
    sumOfArray = max(sum, sumOfArray);
    C[i] = sumOfArray;
    }
    int maxNum = C[0];
    for ( i = 0; i < length; i++)
    {
    if (C[i] > maxNum)
    {
    maxNum = C[i];
    }
    }

    cout << "这个循环整数数组的子数组之和的最大值为:" << maxNum << endl;
    return 0;
    }
    int max(int A, int B)
    {

    if (A > B)
    {
    return A;
    }
    else
    {
    return B;
    }
    }

    5. 结果截图

    6.总结

    读题的时候要耐心,先把写得思路整理好之后再开始编程。

  • 相关阅读:
    ASP.NET MVC简介
    jQuery
    C#webform LinQ
    webform LinQ
    C# WebForm内置对象2+Repeater的Command
    C#WebForm内置对象
    JavaScricp
    Webform 内置对象 Session对象、Application全局对象,ViewState
    Webform 内置对象 Response对象、Request对象,QueryString
    WebForm复杂控件
  • 原文地址:https://www.cnblogs.com/xiangyu721/p/12383165.html
Copyright © 2011-2022 走看看