• 一维子数组成环后最大子数组的和


    组成员:
    姜中希 王召博
    设计思想(在后来实现过程中有改进):
    (1) 外层while循环控制结束(i=n)的时候停止。
    (2) 内层计算:按照不循环数组的方式计算,每当外层i增加1,数组更新,
    第i-1个数变为数组的第n个数,第i个数变为数组的第一个数,并进行
    最大子数组的和的求解。并将最大子数组的开头位置坐标记录入一个数组中,
    每次计算的最大和也存入一个数组中,最后进行比较得到最大和以及和最大子的数组的开头位置坐标。
    源代码:
    //2015/4/4
    #include<iostream>
    using namespace std;
    void max(int l,int *a)//当元素不全为负数的情况
    {
    int sum=0,j,p;
    for(int m=0;m<l;m++)//控制首元素是那一个
    {
    p=0;
    for(int i=m;i<l+m;i++)//控制比较的数组大小始终为l
    {
    if(p<0)
    {
    p=a[i];
    }
    else
    {
    p=p+a[i];
    }

    if(sum<p)
    {
    sum=p;
    j=i; //记录下当前最大子数组的最后一个元素的坐标
    }
    }
    }
    cout<<"最大子数组的和为:"<<sum<<endl;
    cout<<"最大子数组的元素位置为(从后往前输出):"<<endl;
    p=0,sum=0;
    int flag;
    for(int i=j-l+1;i<=j;i++)
    {
    if(a[i]>0)
    {
    flag=i;
    break;
    }
    }
    for(int i=j;i>=flag;i--)//从最后元素一个往前找寻找范围是l结果是从j到j-l+1范围内最大子数组的所有元素的下标
    {
    if(p<0)
    {
    p=a[i];
    }
    else
    {
    p=p+a[i];
    cout<<i%l+1<<" ";
    }
    if(sum<p)
    {
    sum=p;

    }

    }
    cout<<endl;
    }
    void main()
    {
    int n,count=0,mx;
    cout<<"请输入数组的长度:";
    cin>>n;

    int *a=new int[2*n];//申请一个动态数组数组的长度为2n
    cout<<"请输入数组元素:";
    for(int i=0;i<n;i++)
    {
    cin>>a[i];
    if(a[i]<0)
    {
    count++;
    }
    }

    if(count==n)//当数组元素全是负数的情况只需比较单个元素的大小并记下坐标
    {
    mx=a[0];
    int c=0;
    for(int i=1;i<n;i++)
    {
    if(a[i]>mx)
    {
    mx=a[i];
    c=i;
    }
    }
    cout<<"最大子数组的和为:"<<mx<<endl;
    cout<<"最大和子数组的位置是:"<<c+1<<endl;
    }
    else
    {
    for(int i=n;i<2*n-1;i++)
    {
    a[i]=a[i-n];//将输入的数组元素在此数组中存放两边但第二遍不用存最后一个因为用不着从而成为环
    }
    for(int i=0;i<2*n-1;i++)
    {
    cout<<a[i]<<" ";
    }
    cout<<endl;
    max(n,a);
    }

    }

    {
        mx

    屏幕截图:
      
    总结:
    首先我觉得用把数组再储存一遍看成环是个不错的想法,再就是要有欢迎错误的想法,当别人给自己指出错误或者可以改进的地方时不仅是自己的程序更加趋于完美,个人的能力和对于学习的态度也随之提高,最后就是环是对结队开发时任务分配感觉力不从心我不知道应该如何协调俩人的任务,可肯定有结对开发提高效率的方法,不然怎么会有那些成功的例子   ,需要在这方面提高。
  • 相关阅读:
    Merge Sort
    important在css中的作用
    Quick Sort
    Shell's Sort
    2019年7月22日~28日 第四周学习记录
    eclipse安装心得和环境变量配置的体会
    2019年7月15日~7月21日 第三周学习记录
    2019年7月1日~7月7日 第一周学习记录
    程序为本,代码方式仅是语言 ———《大道至简软件工程实践者的思想》
    2019年7月8日~7月14日 第二周学习记录
  • 原文地址:https://www.cnblogs.com/xizhenghe/p/4429055.html
Copyright © 2020-2023  润新知