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


    结对人员:新1201-2班高扬、信1201-1班韩雪东

    一、题目要求与设计思路

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

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

    二、源代码

      1 // shuzuhuan0327.cpp : Defines the entry point for the console application.
      2 //作者:韩雪东,高扬
      3 //时间:2015/3/27
      4 
      5 #include "stdafx.h"
      6 #include "stdio.h"
      7 #include "stdlib.h"
      8 #include "time.h"
      9 
     10 int shuchu(int m[],int szcdx,int xhy)//m[]表示要测试的数组,szchx表示数组长度,xhy表示循环条件
     11 {
     12     int t,p;
     13     int max,sum;
     14     //缓存数组赋值
     15     int c[10];
     16     int v[10];
     17     for(t=szcdx-xhy-1;t<szcdx;t++)
     18     {
     19         c[t-szcdx+xhy+1]=m[t];
     20     }
     21     //循环
     22     for(t=xhy;t>=0;t--)
     23     {
     24         sum=0;
     25         for(p=0;p<=t;p++)
     26         {
     27             sum=sum+c[p];
     28         }
     29         v[t]=sum;
     30     }
     31     //循环输出最大值
     32     max=v[0];
     33     for(t=0;t<xhy+1;t++)
     34     {
     35         if(max<=v[t])
     36         {
     37             max=v[t];
     38         }
     39         printf("%d  ",v[t]);
     40     }
     41     
     42     return max;
     43 }
     44 
     45 int main(int argc, char* argv[])
     46 {
     47     srand(time(NULL));
     48     int a[10];
     49     int b[10];
     50     for(int j=0;j<10;j++)
     51     {
     52         a[j]=rand()%51-25;
     53         printf(" %d ",a[j]);
     54     }
     55     int maxx[10];
     56     printf("
    ");
     57     
     58     for(int i=9;i>=0;i--)
     59     {
     60         printf("包含数组中第%d个数在内的所有相邻子数组的和:",10-i);
     61         maxx[i]=shuchu(a,10,i);        
     62         printf("
    %d
    
    ",maxx[i]);
     63     }
     64     int maxxx=maxx[0];
     65     for(i=0;i<10;i++)
     66     {
     67         if(maxxx<=maxx[i])
     68         {
     69             maxxx=maxx[i];
     70         }
     71     }
     72     printf("
    
    该数组的所有子数组的和的最大值:%d
    
    ",maxxx);
     73     b[0]=maxxx;
     74     int p;
     75     for(int t=0;t<9;t++)
     76     {
     77         p=a[0];
     78         for(int q=0;q<9;q++)
     79         {
     80             
     81             a[q]=a[q+1];
     82             
     83         }
     84         a[9]=p;
     85         //int maxx[10];
     86         
     87         for(int i=9;i>=0;i--)
     88         {
     89             printf("包含数组中第%d个数在内的所有相邻子数组的和:",10-i);
     90             maxx[i]=shuchu(a,10,i);        
     91             printf("
    %d
    
    ",maxx[i]);
     92         }
     93         int maxxx=maxx[0];
     94         for(i=0;i<10;i++)
     95         {
     96             if(maxxx<=maxx[i])
     97             {
     98                 maxxx=maxx[i];
     99             }
    100         }
    101         printf("
    
    该数组的所有子数组的和的最大值:%d
    
    ",maxxx);
    102         b[t+1]=maxxx;    
    103     }
    104     int ma;
    105     ma=b[0];
    106     for(i=0;i<10;i++)
    107     {
    108         if(ma<=b[i])
    109         {
    110             ma=b[i];
    111         }
    112     }
    113     printf("
    
    该数组的所有子数组的和的最大值:%d
    
    ",ma);
    114     return 0;
    115     
    116 }

    三、运行结果截图

    四、心得体会

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

    五、有图有真相

  • 相关阅读:
    DEDECMS点击主栏目默认显示第一个子栏目列表的方法
    Dede 删除文档同时文章中的图片的方法
    DEDECMS点击主栏目默认显示第一个子栏目列表的方法
    Inside SharePoint 2010 (5): Pages and Navigation
    开源中文分词FudanNLP
    Caching And Processing 2TB Mozilla Crash Reports In Memory With Hazelcast
    盛大 牛人 blog
    a phd
    lily project
    使用redis实现trie结构
  • 原文地址:https://www.cnblogs.com/hanshidiguo/p/4377728.html
Copyright © 2020-2023  润新知