您的位置:首页 > 其它

体验结对开发的乐趣(4)--(首尾相连的一维数组求最大子数组和的问题)

2015-03-30 12:59 211 查看
结对人员:新1201-2班高扬、信1201-1班韩雪东

一、题目要求与设计思路

1.题目要求:这次的数组要求首尾相连形成一个环,

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

二、源代码

// 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;

}


三、运行结果截图



四、心得体会

主要处理的就是数组如何首尾相连的问题,其他的都是和以前的样。

五、有图有真相

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