标签:
1 1 4 1 1 2 1 6 2 1 1 2 1 3 0
1 4 5
1 #include <bits/stdc++.h> 2 using namespace std; 3 const int maxn = 1010; 4 int dp[maxn][maxn],a[maxn],n; 5 int main() { 6 while(scanf("%d",&n),n) { 7 memset(dp,0,sizeof dp); 8 for(int i = 1; i <= n; ++i) { 9 scanf("%d",a + i); 10 dp[i][i] = 1; 11 } 12 for(int i = n; i > 0; --i) { 13 for(int j = i + 1; j <= n; ++j) { 14 dp[i][j] = max(dp[i][j],max(dp[i][j-1],dp[i+1][j])); 15 if(a[i] == a[j]) dp[i][j] = max(dp[i][j],dp[i+1][j-1] + 2); 16 } 17 } 18 int ret = 0; 19 for(int i = 1; i <= n; ++i) 20 ret = max(ret,dp[1][i] + dp[i+1][n]); 21 printf("%d\n",ret); 22 } 23 return 0; 24 }
标签:
原文地址:http://www.cnblogs.com/crackpotisback/p/4786282.html