# 最长连续子序列和

### 连续 子序列 相当于子数组

#### 动态规划

##### 一维

dp[i]表示以i结尾的子数组的最大和

//要求输出子序列和的第一个和最后一个
#include<iostream>
#include<cstring>

//两个辅助数组
const int maxn=1000;
int dp[maxn];
int pre[maxn];//存放子序列的开始
int arr[maxn];
using namespace std;
int maxsubarray(int arr[],int n,int &flag){
memset(dp,0,sizeof(dp));
memset(pre, 0, sizeof(pre));
pre[0]=0;//0的开始为0
dp[0]=arr[0];
int res=dp[0];
for(int i=1;i<n;i++){
if(arr[i]>dp[i-1]+arr[i]){
dp[i]=arr[i];
pre[i]=i;
}else{
dp[i]=dp[i-1]+arr[i];
pre[i]=pre[i-1];
}
if(dp[i]>res){
flag=i;
res=dp[i];
}
}
return res;
}
int main(){
int N;
while(cin >> N){
if(N==0){
break;
}
for(int i=0;i<N;i++){
cin>>arr[i];
}
int flag=0;
cout<<maxsubarray(arr,N,flag)<<" ";
cout<<arr[pre[flag]]<<" "<<arr[flag]<<endl;
/*
for (int i = 0; i < N;i++){
cout << dp[i] << " ";
cout << pre[i] << " ";
}*/
}
return 0;
}


##### 二维 最大子矩阵

#include <iostream>
#include <cstring>
using namespace std;

int maxsub(int a[],int n)
{
int i,max=0,b=0;
for(i=0;i<n;i++)
{
if(b > 0)
b += a[i];
else
b = a[i];
if(b > max)
max = b;
}
return max;
}

int main()
{
int n,i,j,k,maxsubrec,maxsubarr;
int dp[101][101],arr[101];
while(cin>>n)
{
for(i=0;i<n;i++)
for(j=0;j<n;j++)
cin>>dp[i][j];
maxsubrec = 0;
for(i=0;i<n;i++)
{
memset(arr,0,sizeof(arr));
for(j=i;j<n;j++)
{
for(k=0;k<n;k++)
arr[k] += dp[j][k];
maxsubarr = maxsub(arr,n);
if(maxsubarr > maxsubrec) maxsubrec = maxsubarr;
}
}
cout<<maxsubrec<<endl;
}
}


08-02 3291

08-21 660

07-21 307

03-16 1638

02-09 79

04-04 4791

12-02 449

01-26 8065

04-12 2913

11-08 1192

08-20 372

03-11 58

09-24 1798

01-28 7898

09-07 319

05-29 11万+

09-16 56

05-25 2987

04-14 59万+

03-13 15万+

03-01 13万+

03-04 14万+

03-08 5万+

03-08 7万+

04-25 6万+

03-10 13万+

03-12 11万+

03-13 11万+

03-14 1万+

03-18 1万+

03-19 3万+

03-19 8万+

03-19 3万+

03-22 4万+

03-24 3万+

03-25 3万+

05-08 5万+

03-25 9万+

03-27 1万+

03-29 21万+

03-29 10万+

03-30 16万+

05-31 6665

05-31 1万+

04-02 6044

04-02 4万+

04-06 7万+

04-09 8万+

04-09 3万+

05-17 8869

04-11 4万+

04-15 6万+

04-18 4万+

04-20 4万+

04-24 3万+

04-29 7158

04-30 1万+

04-30 9672

05-01 6584

05-03 1万+

05-16 5万+

05-06 1万+

05-08 4万+

05-10 3481

05-14 6785

05-14 2098

05-16 3758

05-16 1万+

05-20 1134

05-18 8642

05-27 1610

05-18 3781

05-19 1万+

05-21 8072

05-21 8132

05-27 7279

05-25 5492

05-23 6708

#### 2020年，令人惊叹的Echarts！

©️2019 CSDN 皮肤主题: 1024 设计师: 上身试试