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

    #include<iostream>
    using namespace std;
    #define Nu 5

    int main()
    {
    int max=0,s=0,t=Nu;
    int a[Nu];
    int b[Nu*(Nu+1)/2]={0};
    int k;

    cout<<"随机产生数组为:";
    for(int i=0;i<Nu;i++)
    {
    k=rand()%2;
    do
    a[i]=rand();
    while(a[i]>100);
    a[i]=k==1?a[i]:-a[i];
    max=a[i];
    cout<<a[i]<<" ";
    }
    cout<<endl;
    int M=0,N=Nu;
    for(int i=0;i<Nu*(Nu+1)/2;i++)
    {
    for(int j=M;j<N;j++)
    b[i]=b[i]+a[j];

    if(b[i]>max)
    {
    max=b[i];
    s=M;
    t=N;
    }

    if(N==M+1)
    {
    N=Nu;
    M=M+1;
    }
    else N=N-1;

    }

    cout<<"所有子数组和为:"<<endl;
    for(int i=0;i<(Nu*(Nu+1)/2);i++)
    cout<<b[i]<<endl;

    cout<<"相邻子数组最大和为:"<<max<<endl;

    cout<<"相应子数组为:";
    for(int i=s;i<t;i++)
    cout<<a[i]<<" ";
    cout<<endl;

    return 0;
    }

    思路:随机产生5个数存在数组a里,定义数组b来存储子数组的和,求和先求以第一个随机数开头的所有情况,再求以第二个数开头的所有情况,以此类推,

    例如:随机数为1,2,3,4,5;先求

    1,2,3,4,5

    1,2,3,4

    1,2,3

    1,2

    1

    这几个子数组的和,然后继续求

    2,3,4,5

    2,3,4

    2,3

    2

    以此类推,用Max记录和的最大值,用s,t来记录子数组的头尾序号,最后输出。

    总结:刚开始完全没思路啊,题都看不懂啊,后来思路有了,想过用二维数组,想过用函数自调用,想过用指针,但是能力有限啊,根本实现不出来,

    只能想简单的了。。。后来还是在上课的时候开小差就突然想到现在这个了,回来就试了试,就做完了,呵呵还是挺开心的,本来打算去看别人的思路

    了,后来还是自己想的,虽然比较简单,但起码是自己做的吧

                                                                                                    周活动总结表(第三周)

    活动

    上课

    编写代码

    看书

    休息娱乐

    总计

     周一

    300

    300

        周二

    500

    500

    周三

    100

    100

    周四

    300

    300

    周五

    200

    300

    500

    周六

    45

    300

    345

    周日

    115

    115

    总计

    1400

    115

    45

    600

    2060

                                                                                                         时间记录日志

      日期

    开始时间

    结束时间

    中断时间

    净时间

    活动

    备注

    21/3

    23:10

    23:20

    10

    找思路

    完全没想出来

    22/3

    9:00

    10:05

    65

    找思路

    用函数自调用

    10:05

    1200

    115

    编程

    没做出来,就此搁置,很消沉

    23/3

    9:25

    9:45

    20

    上课

    走神重新找思路

    10:10

    1130

    80

    编程、测试

    呵呵哒,出来了

                                                                                                         缺陷记录日志

    日期

    编号

    类型

    引入阶段

    排除阶段

    修复时间

    修复缺陷

    22/3

    1

    函数自调用不会

    编码

    编译

    未修复出来

       22/3

    2

    循环混乱

    编码

    编译

    2

    3

    变量赋值

    编码

    编译

    1

    填错了

  • 相关阅读:
    开发工具
    人脸识别
    mysql 3813:Column check constraint 'tb_course_chk_3' references other column.
    sleep()和wait()的异同
    线程通信——wait(),notify(),notifyAll()
    对王建民老师的评价&JAVA结课自我总结
    JAVA学习日报 12/19
    JAVA学习日报 12/18
    JAVA学习日报 12/17
    JAVA学习日报 12/11
  • 原文地址:https://www.cnblogs.com/xiaowumao/p/4359496.html
Copyright © 2011-2022 走看看