问题:给一列数n个,求最大连续子序列和(即连续的子序列中和最大的序列)若所有K个元素都是负数,则定义其最大和为0,输出整个序列的首尾元素 本文作者 凌风 csdn (iaccepted)
拓展:给一个n*n的矩阵,求其中和最大的子矩阵(即所有子矩阵中和最大的阵)
首先也是从最简单的着手,拿到问题,很容易想到的就是直接爆搜(求所有可能的子序列和并找出最大的即可)时间复杂度为n^2
#include <stdio.h>
#include <string.h>
#include <limits.h>
#define N 10002
/*
problem:求最大连续子序列的问题dp
time:n^2
*/
int main(){
int a[N],i,j,maxx,sum,n,ps,pe;
scanf("%d",&n);
for(i=0;i<n;++i){
scanf("%d",&a[i]);
}
maxx = INT_MIN;//初始为最小整数
for(i=0;i<n;++i){
sum = 0;
for(j=i;j<n;++j){//i,j两个子循环来遍历所有的子序列并计算其和(a[i]加到a[j])
sum += a[j];
if(sum>maxx){//把和大的保留并记录下最大序列