求最大子数组二(结对开发)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求最大子数组二(结对开发)相关的知识,希望对你有一定的参考价值。

结对伙伴

纪烈翔

博客名:我们都是小怪兽

链接:http://www.cnblogs.com/qwer113/

设计思想:

1:随机输入一个数组

2:用直接穷举法求出该数组的最大和(把数组看成环形)

3:定义一个结构体,求出最大数组时,记录该数组的开始和结束的位置

4:输出

 

技术分享

程序源代码:

//动态规划 
//2016/3/26
#include "iostream"
using namespace std;

#define N 100

typedef struct data//定义结构体
{
    int kaishi;
    int jieshu;
    int value;
}data;


int main()
{
    //任意输入一个数组
    int  num = 0;
    int A[N];
    cout << "任意输入一个数组:";
    while (true)
    {
        cin >> A[num];
        num++;
        if (getchar() == ‘\\n‘)
        {
            break;
        }
    }
    data Start;
    data All;
    //初始化
    Start.kaishi = All.kaishi = 0;
    Start.jieshu = All.jieshu = 0;
    Start.value = All.value = A[0];
    //直接穷举法求出该环形数组的最大值
    //记录该数组的起始位置和结束位置
    for (int i = 0; i < num; i++)
    {
        Start.value = 0;
        Start.kaishi = i;
        for (int j = i; j < num; j++)
        {
            Start.value += A[j];
            Start.jieshu = j;
            if (Start.value>All.value)
                All = Start;
        }
        for (int j = 0; j < i; j++)
        {
            Start.value += A[j];
            Start.jieshu = j;
            if (Start.value>All.value)
                All = Start;
        }
    }
    //输出
    cout <<"开始位置:"<<All.kaishi+1<<endl<<"结束位置:"<<All.jieshu+1<<endl<<"最后和为:"<< All.value<<endl;

    return 0;

}

运行截图:

技术分享

技术分享

技术分享

项目计划总结:

技术分享

时间记录日志:

技术分享

缺陷记录日志:

技术分享

以上是关于求最大子数组二(结对开发)的主要内容,如果未能解决你的问题,请参考以下文章

求最大子数组(结对开发)

求一维数组的最大子数组1(结对开发)

求最大联通子数组的和(结对开发)

第四次程序(结对开发)

结对开发——返回一个整数数组中最大子数组的和

二维数组最大子数组(结对开发)