zoukankan      html  css  js  c++  java
  • 首尾相连数组

     

    一、实验思路

     

       按要求随机产生几个数,然后先求数组的最大子数组的最大值,然后再比较他们的最大值求出整个子数组的最大子数组和

     

      丁官甲:程序编码和思路讨论                   吴论:思路讨论,代码编程后的测试和审核

     

    二、实验代码

     

    #include<iostream.h>

     

    #include<stdlib.h>

     

    int Maxsum(int *a,int n)//一维数组的求最大

     

    {

     

       int tempstart =0,sum=0,max=-1000;

     

       int i;   

     

      int start,end;  

     

      start=end=0;  

     

      for(i=0;i<n;i++)

     

       {

     

            if(sum<0)

     

          {

     

            sum=a[i];

     

            tempstart=i;

     

          }

     

          else

     

          {

     

            sum+=a[i];

     

             }

     

          if(sum>max)

     

          {

     

            max=sum;

     

            start=tempstart;

     

            end=i;

     

          }  

     

           } //

     

       cout<<"start="<<start<<endl<<"end="<<i<<endl;

     

       return max;

     

    }

     

    int main()

     

    {

     

        int b[10000];

     

        int max[10000];

     

        int num,i;

     

         cout<<"输入数组成员个数:";

     

        cin>>num;

     

        for(i=0;i<num;i++)

     

        {

     

           b[i]=(rand()%1000)-500;

     

        }

     

        cout<<"输出数组:"<<endl;

     

         for(i=0;i<num;i++)

     

        {

     

           cout<<b[i]<<" ";

     

        }

     

       cout<<endl; 

     

      for(i=0;i<(num-1);i++)  //将环状数组转换为一维数组

     

       {

     

          b[num+i]=b[i];

     

       }

     

       int d[1000],st,en;

     

       for(i=0;i<num;i++)   //将一维数组转换为n个最大子数组  

     

      {

     

            for(int j=0;j<num;j++)  

     

            {

     

            d[j]=b[i+j];

     

            max[i]=Maxsum(d,num);

     

            }

     

       }

     

       int maxm=max[0];//比较n个最大子数组的最大子数组的最大值

     

      for(i=0;i<num;i++)

     

       { 

     

          if( maxm>max[i])

     

          {

     

            maxm=max[i];

     

          }

     

       }

     

      cout<<"最大子数组和为:"<<maxm<<endl;

     

      return 0;

     

    }

     

    三、实验结果截图

     

  • 相关阅读:
    方法的参数传递机制
    策略模式
    Factory(简单的工厂模式)
    java 跨域问题解决
    Map 转成Json字符串
    FastDFS 上传,删除文件
    MD5 密码加盐
    Java-图片压缩
    调用支付宝人脸采集查询图片Base64解码
    HttpClient工具类
  • 原文地址:https://www.cnblogs.com/dgj1314/p/5325744.html
Copyright © 2011-2022 走看看