• 连通最大子数组和(结对开发)


    题目:返回一个二维数组中最大子数组的和(连通性)

    合作伙伴:张江鹏    博客地址:http://home.cnblogs.com/u/gaara-zhang/

    设计思路:把数按行分成几个一维数组,对于该一维数组,求出他们的最大连续数组之和,并且记录下最大连续数组的第一位和最后一位的位置,之后判断几个一维数组的最大 连续数组的位置是否相接或包括(如,第一行是1和4,第二行是3和5,这样就相连)。最后在加上没有包括的正数(必须在上一行的最大连续数组的第一位和最 后一位的位置之间)。输出之前之和就行。

    #include<iostream>
    using namespace std;
      
    int Max(int n,int a[],int *smark,int *mmark)
    {
        int b[100]={0};
        int i,sum1=0,max1=0;
        for(i=0;i<n;i++)
        {
            if(sum1<0)
            {
                sum1=a[i];
            }
            else
            {
                sum1=sum1+a[i];
            }
            b[i]=sum1;
        }
        max1=b[0];
        for(i=0;i<n;i++)
        {
            if (max1<b[i])
             {
                 max1= b[i];
                 *mmark = i;
             }
        }
         for (i = *mmark;i >= 0;i--)
        {
            if (b[i] == a[i])
            {
                 *smark = i;
                 break;
            }
        }
         return max1;
    }
      
    void main()
    {
        int m,n,i,j,smark,mmark,t2;
        int sum,max;
        int up[100],down[100],t[100];
        int a[100][100],b[100];
        cout<<"输入二维数组的行和列";
        cin>>m>>n;
        for(i=0;i<m;i++)
        {
            for(j=0;j<n;j++)
            {
                cin>>a[i][j];
            }
        }
      
        for(i=0;i<m;i++)
        {
            for(j=0;j<n;j++)
            {
                b[j]=a[i][j];
            }
            sum=Max(n,b,&smark,&mmark);
            up[i]=smark;                                  
            down[i]=mmark;
            t[i]=sum;
      
        }
        t2=t[0];
        for(i=0;i+1<m;i++)
        {
            if(up[i]<=down[i+1] && down[i]>=up[i+1])
            {
                t2+=t[i+1];
            }
             for(j=up[i];j<up[i+1];j++)
            {
                if(a[i+1][j]>0) t2+=a[i+1][j];                   //判别独立正数
            }
      
        }
         cout<<t2<<endl;
      
    }

  • 相关阅读:
    Excel的小游戏总结
    借助“URLScan”工具隐藏header头服务器信息
    WinCe设备连接Win10系统
    WinForm 通过HttpWebRequest实现大文件上传
    Sql 动态行转列 pivot
    C# 调用LAKALA接口获取静态二维码数据
    蜗牛星际黑群晖硬盘休眠的设置
    GIT Windows服务端搭建笔记
    C#通过socket判断FTP服务器是否通畅并判断用户名密码是否正确
    C#获取MAC地址
  • 原文地址:https://www.cnblogs.com/wanzitou/p/5359484.html
Copyright © 2020-2023  润新知