1、给定一个数组,其中元素有正,也有负,找出其中一个连续子序列,使和最大。
B[i+1]=B[i]>0?B[i]+num[i+1]:num[i+1]
#include <iostream>
using namespace std;
const int M = 1000;
int num[M];
int ans[M];
int n,an;
int main()
{
cin>>n;
for(int i=0; i<n; i++)
cin>>num[i];
an=num[0];
for(int i=0; i<n; i++)
{
if(ans[i]>0)
{
ans[i+1]=num[i+1]+ans[i];
}
else
{
ans[i+1]=num[i+1];
}
}
for(int i=1;i<=n;i++)
{
an=max(an,ans[i]);
}
cout<<an<<endl;
return 0;
}
2、给定一个矩阵(二维数组),其中数据有大有小,请找一个子矩阵,使得子矩阵的和最大,并输出这个和。