您的位置:首页 > 产品设计 > UI/UE

Poj 2593 动态规划 Max Squence

2012-12-26 21:34 337 查看
http://poj.org/problem?id=2593

http://www.cnblogs.com/devil-91/archive/2012/08/06/2625765.html

#include<stdio.h>
#include <memory.h>
#include<iostream>
using namespace std;
void run()
{
int left[100005];
int right[100005];
int a[100005];
while(1)
{
int n,i;
scanf("%d",&n);
if(n==0)break;
for(i=0;i<n;i++)
scanf("%d",&a[i]);
int sumL=0;
int max=-999999;
for(i=0;i<n;i++)
{
sumL=sumL+a[i];
if(sumL>max)//注意 if(sumL>max)和if(sumL<0)不能交换
max=sumL;
if(sumL<0)
sumL=0;
left[i]=max;
}
max=-999999;
int tmp=-999999;
int sumR=0;
for(i=n-1;i>=1;i--)
{
sumR=sumR+a[i];
if(sumR>max)
max=sumR;
if(sumR<0)
sumR=0;
if(tmp<max+left[i-1])
tmp=max+left[i-1];
}
printf("%d\n",tmp);
}
}
int main()
{
run();
return 0;
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: