poj 1050 DP

来源:互联网 发布:剑三喵姐妖娆捏脸数据 编辑:程序博客网 时间:2024/06/06 00:52

开始就想到分成多组最大连续子序列来求,但是这样就是10^6,以为会超时,所以一直想优化,但苦苦却不可得,最后看了别人的报告发现都是这么求得。。。。T_T

AC代码如下:

#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int calc_max( int a[], int N ){int lis, pre;lis = pre = -10000;for( int i = 0; i < N; i++ ){pre = max( pre + a[i], a[i] );lis = max( lis, pre );}return lis;}int main(){int temp[110];int num[110][110];int N, ans;while( scanf( "%d", & N ) != EOF ){for( int i = 0; i < N; i++ ){for( int j = 0; j < N; j++ ){cin >> num[i][j];}}ans = -1000000;for( int i = 0; i < N; i++ ){memset( temp, 0, sizeof( temp ) );for( int j = i; j < N; j++ ){for( int k = 0; k < N; k++ ){temp[k] += num[j][k];}ans = max( ans, calc_max( temp, N ) );}}cout << ans << endl;}return 0;}


0 0
原创粉丝点击