暴力破解最大数组问题

来源:互联网 发布:centos 7 解压缩tar 编辑:程序博客网 时间:2024/06/05 05:07
//----------------------------------------------
//       Author   :心海
//       Date     :2013-11-17
//       Blog     :http://blog.sina.com.cn/u/2116533530
//       Copyright :anyone
//       PS       :欢迎拍砖、指正。一起学习,共同进步。
//-----------------------------------------------

#include<iostream>
using namespace std;


//暴力破解最大数组问题O(n*n)
//数组:A
//元素数组个数: n
//返回值left,right,sum
//算法导论:第三版P42
int FindMaxSumArrayViolence(int A[],int n,int&left,int& right)
{
    int sum =A[0],temp;
    left =0;
    right =0;
    for(inti=0;i<n;i++)
    {
      temp = 0;
      for(int j=i;j<n;j++)
        temp += A[j];
         if(sum<temp)
         {
            sum = temp;
            left = i;
            right = j;
         }
      }
    }
    returnsum;
}

int main()
{
    intA[16]={13,-3,-25,20,-3,-16,-23,18,20,-7,12,-5,-22,15,-4,7};
    intB[16]={13,3,25,20,3,16,23,18,20,7,12,5,22,15,4,7};
    intleft,right;
    int sum =FindMaxSumArrayViolence(A,16,left,right);
   cout<<"从第"<<left+1<<"个元素到"<<"第"<<right+1<<"个元素构成的子数组和值最大,和值="<<sum<<endl<<endl;

    sum =FindMaxSumArrayViolence(B,16,left,right);
   cout<<"从第"<<left+1<<"个元素到"<<"第"<<right+1<<"个元素构成的子数组和值最大,和值="<<sum<<endl<<endl;
    return0;
}
0 0
原创粉丝点击