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


    结对人员:韩雪东,高扬

    一、设计思路

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

    二、源代码

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

    三、结果截图

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

    四、心得体会

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

    五、附图

  • 相关阅读:
    Django学习之八:forms组件【对form舒心了】
    Django学习之七:Django 中间件
    Django学习之六:Django 常用模块导入记忆
    Django学习之五:Django 之 注意事项及汇总
    Django学习之四:Django Model模块
    工程师基本常识
    Redis详解
    Nginx浅析
    MySQL数据库引擎、事务隔离级别、锁
    浅谈HTTP中GET和POST请求方式的区别
  • 原文地址:https://www.cnblogs.com/gaoyang110/p/4376580.html
Copyright © 2020-2023  润新知