zoukankan      html  css  js  c++  java
  • 二维数组成环最大和的子数组的和

    设计思想:综合了前面一维数组成环和二维数组求最大子数组的思想。

    屏幕截图:

    总结:

    把做过的程序封装成一个个的接口,当使用时直接调用即可。

    源代码:

    //jiangzhongxi 2015/4/16
    #include<iostream>
    using namespace std;
    void max(int row,int col)
    {

        int ** a=new int*[row+1];
        int ** b=new int*[row+1];
        int h;//用于每一个一维数组上已经相加元素的个数够一个环则开始下一个
        for(int i=1;i<=row;i++)
        {
            a[i]=new int[2*col];
        }
        for(int i=1;i<=row;i++)
        {
            b[i]=new int[2*col];
        }
        cout<<"请输入"<<row<<""<<col<<"列的数组的元素"<<endl;

        int count=0;
        for(int i=1;i<=row;i++)
        {
            for(int j=1;j<=col;j++)
            {
                cin>>a[i][j];
                b[i][j]=a[i][j];
                if(a[i][j]<0)
                {
                    count++;
                }
            }
        }
        for(int i=1;i<=row;i++)//将二维数组加倍成环
        {
            for(int j=col+1;j<=2*col-1;j++)
            {        
                a[i][j]=a[i][j-col];
            }
        }
        /*cout<<"所输入的数组为:"<<endl;
        for(int i=1;i<=row;i++)
        {
            for(int j=1;j<=2*col-1;j++)
            {        
                cout<<a[i][j]<<" ";
            }
            cout<<endl;
        }
    */
        int k,n=2;
        if(count<row*col)//即不是所有的元素都是负数的情况
        {
            int sum=0;
          for(int m=1;m<=row;m++)
          {
            k=n;
            for(int i=1;i<=row;i++)
           {
             for(int j=1;j<=2*col-1;j++)
            {
                b[i][j]=a[i][j];
            }
           }//b[i]是经过元算后的数组而a[i]用于保留原数组
            for(int i=m;i<=row;i++)
           {
            while(k<=i)//只有在行数大于等于2时才出现两行相加
            {
              for(int j=1;j<=2*col-1;j++)
             {
                    b[k][j]=b[k-1][j]+b[k][j];
             }
              k++;
            }
          }
            /*cout<<"b"<<endl;
            for(int i=1;i<=row;i++)
           {
             for(int j=1;j<=2*col-1;j++)
            {
                
                cout<<b[i][j]<<" ";
            }
            cout<<endl;
           }
    */
            n++;
            
         for(int i=m;i<=row;i++)
          {
              int c=0;
              h=1;
              while(h<=col)
              {
               for(int j=h;j<=col-1+h;j++)
               {
                 if(c<0)
                {
                    c=b[i][j];
                }
                else
                {
                
                    c=c+b[i][j];
                }
               if(sum<c)
               {
                 sum=c;
               }
               //cout<<sum<<"  ";
              }
              h++;
              c=0;//一圈结束c清零sum保持
             }
            
         }
        }
        cout<<endl;
        cout<<"最大子数组的和为:"<<sum;
        }
        else
        {
            int sum=a[1][1];
        
           for(int i=1;i<=row;i++)
          {
            for(int j=1;j<=col;j++)
            {
               if(a[i][j]>sum)
               {
                   sum=a[i][j];
               }
            }
          }
                  cout<<endl;
        cout<<"最大子数组的和为:"<<sum;
        }
        for(int i=1;i<=row+1;i++)//删除动态数组
        {
            delete []a[i];
            a[i]=NULL;
        }
        for(int i=1;i<=row+1;i++)//删除动态数组
        {
            delete []b[i];
            b[i]=NULL;
        }
    }
    void main()
    {
        int row,col;//行和列数
         cout<<"请输入数组的行数和列数:";
        cin>>row>>col;
        max(row,col);
    }
  • 相关阅读:
    [PyTorch 学习笔记] 8.1 图像分类简述与 ResNet 源码分析
    [PyTorch 学习笔记] 7.3 使用 GPU 训练模型
    [PyTorch 学习笔记] 7.2 模型 Finetune
    [PyTorch 学习笔记] 7.1 模型保存与加载
    [PyTorch 学习笔记] 6.2 Normalization
    【成都GamEver游戏公司诚邀服务器伙伴】【7~15k一年4次项目奖金】
    如何彻底隐藏iOS7应用的status bar
    更新证书错误Code Sign error: Provisioning profile ‘XXXX'can't be found
    leetcode@ [273] Integer to English Words (String & Math)
    geeksforgeeks@ Largest Number formed from an Array
  • 原文地址:https://www.cnblogs.com/xizhenghe/p/4451736.html
Copyright © 2011-2022 走看看