最大子段和几种算法

来源:互联网 发布:python 全局变量 编辑:程序博客网 时间:2024/04/29 07:10
////最大子段和
//#include<iostream>
//using namespace std;
//int sum=0;
//int submid(int n,int x[100])
//{
//    int ttti,tttj;
//    for(int i=0;i<n;i++)
//    {
//        int ttt=0;
//        for(int j=i;j<n;j++)
//        {
//            ttt+=x[j];
//            if(ttt>sum)
//            {
//                sum=ttt;
//                ttti=i;tttj=j;
//            }
//        }
//    }
//    return sum;
//} 
//int main()
//{
//    int n;
//    int x[100];
//    while(cin>>n)
//    {
//        for(int i=0;i<n;i++)
//        {
//            cin>>x[i];
//        }
//        cout<<submid(n,x)<<endl;
//    }
//    
//} 
////#include<iostream>
////using namespace std;
////int maxsubsum(int *x,int left,int right)
////{
////    int sum=0;
////    if(left==right)
////    {
////        sum=x[left]>0?x[left]:0;
////    } 
////    else 
////    {
////        int centre=(left+right)/2;
////        int leftsum=maxsubsum(x,left,centre);
////        int rightsum=maxsubsum(x,centre+1,right);
////        int s1=0;
////        int lefts=0;
////        for(int i=centre;i>=left;i--)
////        {
////            lefts+=x[i];
////            if(lefts>s1)
////            s1=lefts; 
////        }
////        int s2=0;
////        int rights=0;
////        for(int i=centre+1;i<=right;i++)
////        {
////            rights+=x[i];
////            if(rights>s2)
////            s2=rights;
////        }
////        sum=s1+s2;
////        if(sum<leftsum)sum=leftsum;
////        if(sum<rightsum)sum=rightsum;
////    }
////    return sum;
////}
////int maxsum(int n,int *x)
////{
////    return maxsubsum(x,1,n);
////}
////int main()
////{
////    int n;
////    int x[100];
////    while(cin>>n)
////    {
////        for(int i=1;i<=n;i++)
////        {
////            cin>>x[i];
////        }
////        cout<<maxsum(n,x)<<endl;
////    }
////    
////}
//最大子段和动态规划
//#include<iostream>
//using namespace std;
//int maxsum(int n,int *x)
//{
//    int sum=0,b=0;
//    for(int i=1;i<=n;i++)
//    {
//        if(b>0)b+=x[i];
//        else b=x[i];
//        if(b>sum)sum=b;
//    }
//    return sum;
//}
//int main()
//{
//    int n;
//    int x[100];
//    while(cin>>n)
//    {
//        for(int i=1;i<=n;i++)
//        {
//            cin>>x[i];
//        }
//        cout<<maxsum(n,x)<<endl;
//    }
//}
2 0
原创粉丝点击