zoukankan      html  css  js  c++  java
  • 结对开发--循环一维数组求最大子数组的和

    结对人员:韩雪东,高扬

    一、设计思路

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

    二、源代码

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

    三、结果截图

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

    四、心得体会

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

    五、附图

  • 相关阅读:
    WampServer Mysql配置
    Java实现 蓝桥杯VIP 算法提高 陶陶摘苹果2
    Java实现 蓝桥杯VIP 算法提高 陶陶摘苹果2
    Java实现 蓝桥杯VIP 算法提高 陶陶摘苹果2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 质因数2
    Java实现 蓝桥杯VIP 算法提高 前10名
  • 原文地址:https://www.cnblogs.com/gaoyang110/p/4376580.html
Copyright © 2011-2022 走看看