最大子段和

 1 #include<iostream>
 2 #include<algorithm>
 3 using namespace std;
 4 int maxsum(int nums[],int n)
 5 {
 6     int dp[n];
 7     dp[0]=nums[0];
 8     int Max=dp[0];
 9     for(int i=1;i<n;++i)
10     {
11 
12         if(dp[i-1]<=0)
13         {
14             dp[i]=nums[i];
15         }
16         else
17         {
18            dp[i]=dp[i-1]+nums[i];
19         }
20         Max=max(dp[i],Max);
21     }
22 
23 
24     return Max;
25 }
26 
27 int maxsum1(int nums[],int n)
28 {
29     int dp;
30     dp=nums[0];
31     int Max=dp;
32     for(int i=1;i<n;++i)
33     {
34 
35         if(dp<=0)
36         {
37             dp=nums[i];
38         }
39         else
40         {
41            dp=dp+nums[i];
42         }
43         Max=max(dp,Max);
44     }
45 
46 
47     return Max;
48 }
49 int main()
50 {
51     int a[8]={1,-3,7,8,-4,12,-10,6};
52     //cout<<maxsum(a,8);
53     cout<<maxsum1(a,8);
54     return 0;
55 }

 

posted @ 2021-05-13 23:15  丁帅帅dss  阅读(50)  评论(0)    收藏  举报