返回一个随机数组中的子数组中的数相加最大的和
设计思想:
- 随机生成数组(含有正数与负数)。
- 求所有子数组:按数组长度进行数组的划分(因为要求数组是连续的)。
- 计算所有子数组各自的和,并进行比较(先(按照数组长度)分开比较,最后再将前面比较出来的结果进行比较)得到最大值数组。
实现代码:
//返¤¦Ì回?最Á?大䨮子Á¨®数º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函数 |
|
|
|
|