码迷,mamicode.com
首页 > 编程语言 > 详细

C++学习(1):最大子段和(多种解法)

时间:2017-08-15 10:23:36      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:namespace   span   his   数据   序列   ret   str   最大   names   

问题:给定由n个数(可能为负数)组成的序列a1,a2,a3,...,an,求该序列子段和的最大值。

第一种解法:(最容易考虑的方法,将所有的子段一一相加,然后比较)

 1 #include<iostream>
 2 using namespace std;
 3 int Maxsum(int n,int *a,int &besti,int &bestj)
 4 {
 5     int sum = 0;
 6     for(int i=1;i<=n;i++)
 7     {
 8         int thissum = 0;
 9         for(int j=i;j<=n;j++)
10         {
11             thissum +=a[j];
12             if(thissum>sum)
13             {
14                 sum = thissum;
15                 besti = i;
16                 bestj = j;
17             }
18         }
19     }
20     return sum;
21 }
22 
23 int main()
24 {
25     int Case = 1;
26     int T;//共有多少组数
27     cin>>T;
28     while(T>0)
29     {
30         T--;
31         int sum;
32         int N = 9;//一组有多少个数据
33         cin>>N;
34         int* array = new int[N+1];
35         for(int i=1;i<=N;i++)
36         {
37             cin>>array[i];
38         }
39         int besti,bestj;
40         sum = Maxsum(N,array,besti,bestj);
41         cout<<"Case "<<Case<<":"<<endl;
42         cout<<sum<<" "<<besti<<" "<<bestj<<endl;
43 
44         if(T>0)
45         {
46             cout<<endl;
47         }
48         Case++;
49     }
50     return 0;
51 }

 

C++学习(1):最大子段和(多种解法)

标签:namespace   span   his   数据   序列   ret   str   最大   names   

原文地址:http://www.cnblogs.com/xcxfuryit/p/7363165.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!