hdu4512之完美队形

题目大意:
      吉哥这几天对队形比较感兴趣。
  有一天,有n个人按顺序站在他的面前,他们的身高分别是h[1],h[2] ...h[n],吉哥希望从中挑出一些人,让这些人形成一个新的队形,新的队形若满足以下三点要求,则称之为完美队形:
  
  1、挑出的人保持他们在原队形的相对顺序不变;
  2、左右对称,假设有m个人形成新的队形,则第1个人和第m个人身高相同,第2个人和第m-1个人身高相同,依此类推,当然,如果m是奇数,中间那个人可以任意;
  3、从左到中间那个人,身高需保证递增,如果用H表示新队形的高度,则H[1]< H[2] < H[3] ....

  现在吉哥想知道:最多能选出多少人组成完美队形?

#include
#define N210
inta[N],dp[N];
inline intmax(int a,int b){//比较函数,因为用的次数多,所以将其转化为内联函数
    returna>b?a:b;
}
void initi(intn){//初始化函数
    for(inti=0;i=0;j--){//可以理解为c串
          int temp=0;        //temp可以理解为b串的递增子序列与c串的交集的最大值即可
          for(int i=0;i<=j;i++){ //可以理解为b串

             if(a[i]



你可能感兴趣的:(动态规划)