返回列表 發帖

最大連續子序列和

數值陣列-2,1,-3,4,-1,2,1,-5,4 的最大連續子序列的和是多少?
May

  1. //動態規畫,若前一元素和大於0,則歸0
  2. #include <bits/stdC++.h>
  3. using namespace std;
  4. int main(){
  5.    int nums[]={-2,1,-3,-4,1,1,-1,5,-4};
  6.    int max_sum;
  7.    int sum=max_sum=0;//預設值
  8.    int len_nums=sizeof(nums)/sizeof(nums[0]);
  9.    for(int i=0;i<len_nums;i++){
  10.      if(sum<0)
  11.         sum=0;
  12.      sum +=nums[i];   
  13.       max_sum=max(sum,max_sum);
  14.    }
  15.    cout<<max_sum<<"\n";

  16.    return 0;
  17. }
複製代碼
May

TOP

RE: 最大連續子序列和(使用者自己輸入原始數列)

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. string raw;
  4. int n;
  5. stringstream ss;
  6. vector<int> data;
  7. int sum=0;
  8. int max_sum=0;

  9. int main()
  10. {
  11.     cin.tie(0); cin.sync_with_stdio(0);
  12.     getline(cin, raw);
  13.     ss<<raw;
  14.     while(ss>>n)
  15.         data.push_back(n);//先把輸入的數列存到data
  16.     for(int i: data){ //若sum<0,則歸0,求最大連續子序列的和
  17.         if(sum<0)
  18.             sum=0;
  19.         sum+=i;
  20.         max_sum=max(sum,max_sum);
  21.     }
  22.         //cout<<i<<" ";
  23.     cout<<max_sum<<endl;

  24.     return 0;
  25. }
複製代碼
May

TOP

返回列表