hdu 1231 DP

来源:互联网 发布:淘宝美工主图 编辑:程序博客网 时间:2024/06/05 14:07

超级简单的DP  不过那个判断要注意下。。。我开始用sum = -sum(abs(a[i]))来判断一直错。。。。。。

ac代码如下:

#include <iostream>#include <cstdio>#include <cmath>using namespace std;int main(){int K, a[10010], first, pos, end, startfrom, dp[10010], flog;while( scanf( "%d", &K ) && K ){memset( a, 0, sizeof( a ) );memset( dp, 0, sizeof( dp ) );flog = 1;for( int i = 0; i < K; i++ ){scanf( "%d", a + i );if( a[i] >= 0 ){flog = 0;}}if( flog ){cout << 0 << " " << a[0] << " " << a[K-1] << endl;continue;}startfrom = a[0];first = end = pos = 0;dp[0] = a[0];for( int i = 1; i < K; i++ ){if( startfrom + a[i] < a[i] ){startfrom = a[i];pos = i;}else{startfrom += a[i];}if( dp[i-1] < startfrom ){first = pos;end = i;dp[i] = startfrom;}else{dp[i] = dp[i-1];}}cout << dp[K-1] << " " << a[first] << " " << a[end] << endl;}return 0;}


 

原创粉丝点击