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

    设计思想:

    1. 随机生成数组(含有正数与负数)。
    2. 求所有子数组:按数组长度进行数组的划分(因为要求数组是连续的)。
    3. 计算所有子数组各自的和,并进行比较(先(按照数组长度)分开比较,最后再将前面比较出来的结果进行比较)得到最大值数组。

    实现代码:

    //返¤¦Ì回?最Á?大䨮子Á¨®数ºy组Á¨¦的Ì?和¨ª,ê?王ª?昭?博?,ê?3.22,ê?2015.

    #include<iostream>

    using namespace std;

    #include<time.h>

     

    //控?制?随?机¨²数ºy个?数ºy

    #define N 6

     

    void main()

    {

             int a[N] , b[N] ;

             srand((unsigned int)time(0)) ;

             for(int i = 0 ; i < N ; i ++)

             {

                       a[i] = rand()%20 - 10 ;//随?机¨²生¦¨²成¨¦20以°?内¨²的Ì?数ºy最Á?终?得Ì?到Ì?-10到Ì?10之?间?的Ì?数ºy

             }

             for( int i = 0 ; i < N ; i ++)

             {

                       cout<< a[i] << " " ;

             }

             cout<<endl;

             //按ã¡ä照?数ºy组Á¨¦内¨²数ºy的Ì?个?数ºy分¤?别Àe求¨®最Á?大䨮和¨ª

     

             //每?个?数ºy组Á¨¦中D只?有®D一°?个?数ºy

             b[0] = a[0] ;

             for( int i = 0 ; i < N ; i ++)

             {

                       if( a[i] > b[0] )

                       {b[0] = a[i] ;}

             }

             //每?个?数ºy组Á¨¦中D只?有®D两¢?个?数ºy

             b[1] = a[0] + a[1] ;

             for( int i = 0 ; i < N - 1 ; i ++)

             {

                       if( (a[i] + a[i+1]) > b[1] )

                       {b[1] = a[i] + a[i+1] ;}

             }

             //每?个?数ºy组Á¨¦中D只?有®D三¨y个?数ºy

             b[2] = a[0] + a[1] + a[2] ;

             for( int i = 0 ; i < N - 2 ; i ++)

             {

                       if( (a[i] + a[i+1] + a[i+2]) > b[2] )

                                {b[2] = a[i] + a[i+1] + a[i+2] ;}

             }

             //每?个?数ºy组Á¨¦中D只?有®D四?个?数ºy

             b[3] = a[0] + a[1] + a[2] + a[3] ;

             for( int i = 0 ; i < N - 3 ; i ++ )

             {

                       if( (a[i] + a[i+1] + a[i+2] + a[i+3]) > b[3] )

                       {b[3] = a[i] + a[i+1] + a[i+2] + a[i+3] ;}

             }

             //每?个?数ºy组Á¨¦中D只?有®D五?个?数ºy

             b[4] = a[0] + a[1] + a[2] + a[3] + a[4] ;

             for( int i = 0 ; i < N - 4 ; i ++)

             {

                       if( (a[i] + a[i+1] + a[i+2] + a[i+3] + a[i+4]) > b[4] )

                                {b[4] = a[i] + a[i+1] + a[i+2] + a[i+3] + a[i+4] ;}

             }

            

             b[5] = a[0] + a[1] + a[2] + a[3] + a[4] +a[5] ;

            

             for( int i = 1 ; i < N ; i ++)

             {

                       if( b[0] < b[i])

                       {b[0] = b[i] ;}

             }

             //零¢?个?数ºy

             if( b[0] < 0 )

             {b[0] = 0 ;}

             //输º?出?最Á?后¨®结¨¢果?

             cout<< " 最Á?大䨮和¨ª为a:êo " << b[0] <<endl;

    }

    结果截图:

        

    心得总结:

    我觉得我的问题还是各种函数的运用不够熟练,不过这次的代码非常的别扭,想用两个for循环,除了这种方法,我实在没有别的好思路了,所以。。。。

    代码记录:

    #include<time.h>    srand((unsigned int)time(0));int a = rand()%100 ;//即求0到100之间的随机数

    时间记录日志

    学生:

    王昭博

     

    日期:

    3/13/2015

     

    教师:

    王建民

     

    课程:

    PSP

     

     

     

     

     

     

     

    日期

    开始时间

    结束时间

    净时

    活动

    备注

    3月13日

    10点10分

    12点

    100分钟

    讲师授课

     

    3月13日

    13点

    13点20分

    20分钟

    编写程序

     

    3月18日

    16点

    17点30分

    90分钟

    编写程序

     

    3月18日

    21点30分

    22点

    30分钟

    制作时间记录日志模板

     

    周活动总结表

    姓名:

    王昭博

     

    日期:

    3.22,2015

     

    日期任务

    听课

    编程

     

     

    日统计

    周五

    100分钟

     

     

     

    100

    周日

     

    120分钟

     

     

    120

    阶段时间和效率

     

     

    周数

    3

     

    不包括上一周:

     

    3

     

     

     

    总计

     

    220

     

     

     

    平均

     

    30

     

     

     

    最大

     

    120

     

     

     

    最小

     

    100

     

     

     

    以前各周的:2

    3

     

     

     

    总计

    240

    220

     

     

     

    平均

    40

    30

     

     

     

    最大

    90

    120

     

     

     

    最小

    20

    100

     

     

     

               

    缺陷记录日志

    学生:王昭博

    日期:3.22,2015

    教员:王建民

    程序号:3

    日期

    编号

    类型

    引入阶段

    排除阶段

    修复时间

    修复缺陷

    3.22,2015

    1

    函数

    编程

    编译

    10分钟

     

     

     

    描述:随机数缺少一个srand函数

     

     

     

     

  • 相关阅读:
    iOS开发UI篇—Quartz2D使用(图片剪切)
    LeanCloud存取数据
    Pod搜不到类库解决办法
    第三方的工具以及插件
    苹果开发账号申请注意事项
    苹果账号网址汇总
    代码规范
    流媒体
    iOS面试题
    安装 Alcatraz
  • 原文地址:https://www.cnblogs.com/yuntianblog/p/4358019.html
Copyright © 2011-2022 走看看