您的位置:首页 > 其它

结对开发--循环一维数组求最大子数组的和

2015-03-29 22:18 176 查看
结对人员:韩雪东,高扬

一、设计思路

这次编程我们主要是以以前的程序为基础,在此基础上通过改变数组元素的位置,形成新的数组,并通过调用我们之前找最大值的函数,找出每个数组的最大值,然后经过比较求得结果。

二、源代码

// shuzuhuan0327.cpp : Defines the entry point for the console application.
//作者:韩雪东,高扬
//时间:2015/3/27

#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "time.h"

int shuchu(int m[],int szcdx,int xhy)//m[]表示要测试的数组,szchx表示数组长度,xhy表示循环条件
{
int t,p;
int max,sum;
//缓存数组赋值
int c[10];
int v[10];
for(t=szcdx-xhy-1;t<szcdx;t++)
{
c[t-szcdx+xhy+1]=m[t];
}
//循环
for(t=xhy;t>=0;t--)
{
sum=0;
for(p=0;p<=t;p++)
{
sum=sum+c[p];
}
v[t]=sum;
}
//循环输出最大值
max=v[0];
for(t=0;t<xhy+1;t++)
{
if(max<=v[t])
{
max=v[t];
}
printf("%d  ",v[t]);
}

return max;
}

int main(int argc, char* argv[])
{
srand(time(NULL));
int a[10];
int b[10];
for(int j=0;j<10;j++)
{
a[j]=rand()%51-25;
printf(" %d ",a[j]);
}
int maxx[10];
printf("\n");

for(int i=9;i>=0;i--)
{
printf("包含数组中第%d个数在内的所有相邻子数组的和:",10-i);
maxx[i]=shuchu(a,10,i);
printf("\n%d\n\n",maxx[i]);
}
int maxxx=maxx[0];
for(i=0;i<10;i++)
{
if(maxxx<=maxx[i])
{
maxxx=maxx[i];
}
}
printf("\n\n该数组的所有子数组的和的最大值:%d\n\n",maxxx);
b[0]=maxxx;
int p;
for(int t=0;t<9;t++)
{
p=a[0];
for(int q=0;q<9;q++)
{

a[q]=a[q+1];

}
a[9]=p;
//int maxx[10];

for(int i=9;i>=0;i--)
{
printf("包含数组中第%d个数在内的所有相邻子数组的和:",10-i);
maxx[i]=shuchu(a,10,i);
printf("\n%d\n\n",maxx[i]);
}
int maxxx=maxx[0];
for(i=0;i<10;i++)
{
if(maxxx<=maxx[i])
{
maxxx=maxx[i];
}
}
printf("\n\n该数组的所有子数组的和的最大值:%d\n\n",maxxx);
b[t+1]=maxxx;
}
int ma;
ma=b[0];
for(i=0;i<10;i++)
{
if(ma<=b[i])
{
ma=b[i];
}
}
printf("\n\n该数组的所有子数组的和的最大值:%d\n\n",ma);
return 0;

}


三、结果截图



根据数组中元素的个数,生成等数量的数组,分别求出最大字数组的和,在进行比较,求的最大值!

四、心得体会

这次老师又增加了一点难度,但我们感觉并不是很难解决,课上很快就有了思路,不得不说以前编程的可扩展性真的很重要。有了前面的基础,我们考虑的就是如何去利用以前的来完善现在的,这样大大减少了工作量,降低了编程的难度,以后要养成编有可扩展性程序的好习惯。

五、附图

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: