hdu 4512 DP
来源:互联网 发布:大芒果数据库 编辑:程序博客网 时间:2024/06/11 23:21
dp【i】【j】表示从1到i 从j到N并且以i为前半段的最右的最长的回文序列的最大长度
当num【i】== num【j】 dp【i】【j】 = max( dp【k】【j+1】) + 1;
当num【i】!= num【j】 dp【i】【j】 = dp【i】【j+1】;
AC代码如下:
#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>using namespace std;int dp[220][220];int num[220], N;int main(){ int T; scanf( "%d", &T ); while( T-- ){ scanf( "%d", &N ); for( int i = 1; i <= N; i++ ){ scanf( "%d", &num[i] ); } // if( N == 1 ){ // printf( "1\n" ); // continue; // } memset( dp, 0, sizeof( dp ) ); int ans = 0; for( int i = 1; i <= N; i++ ){ for( int j = N; j > i; j-- ){ if( num[i] == num[j] ){ int temp = 0; for( int k = 1; k < i; k++ ){ if( num[k] < num[i] ){ temp = max( temp, dp[k][j+1] ); } } dp[i][j] = temp + 1; }else{ dp[i][j] = dp[i][j+1]; } int flag = 0; for( int k = i + 1; k < j; k++ ){ if( num[k] > num[i] ){ flag = 1; break; } } ans = max( ans, dp[i][j] * 2 + flag ); } } printf( "%d\n", ans ); } return 0;}
0 0
- hdu 4512 DP
- HDU DP
- DP? HDU
- DP? HDU
- DP? HDU
- 【dp】HDU
- 【dp】HDU
- 【dp】 HDU
- DP? HDU
- 最长递增公共子序列dp(hdu 1423 hdu 4512)
- HDU 1003 && HDU 1231 DP
- hdu 1058 DP
- HDU 1069 dp
- HDU 1024(DP)
- hdu 1257 dp+贪心
- HDU 1087(DP)
- HDU 1506(DP)
- hdu 2844 DP 背包
- 男人患罕见“臭鱼症” 满身腥臭体味像死鱼
- 使用SQL语句创建和删除约束
- 李瑞英证实与张宏平易近辞别《往事联播》
- n个数的最小公倍数
- hdu 1003 Max Sum
- hdu 4512 DP
- 王菲微博“逗贫”语录暴光
- 求数组中出现多于一半的数字
- 【POJ】3041 Asteroids 二分匹配
- hdu 1115 Lifting the Stone(计算几何(重心))
- 更改 centos yum 源
- POJ1128 Frame Stacking 【拓扑排序】+【深搜】
- 精通css(9)bug和修复bug
- MIT算法导论学习-Lecture5 排序