zoukankan      html  css  js  c++  java
  • hdu4745Two Rabbits(dp)

    链接

    哎。。比赛中一下想到了公共子序 之后思维就被局限了 一直在这附近徘徊 想着怎么优化 怎么预处理。。

    观看了众多神牛的代码 。。以前觉得自己能写出个记忆化的最长回文长度 还挺高兴的。。。现在觉得好弱

    因为它是两边一起跑 也就是可以是两段回文子序 所以。。只需要求下1-i i+1-n的最长回文串就可以了 这个是可以在之前求总的时候保留下来的

     1 #include <iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<stdlib.h>
     6 using namespace std;
     7 int dp[1010][1010];
     8 int a[1010];
     9 int main()
    10 {
    11     int i,j,n;
    12     while(scanf("%d",&n)!=EOF)
    13     {
    14         if(!n) break;
    15         memset(dp,0,sizeof(dp));
    16         for(i = 1; i <= n ; i++)
    17         {
    18             scanf("%d",&a[i]);
    19             dp[i][i] = 1;
    20         }
    21         for(i = n ; i >= 1 ;i--)
    22         {
    23             for(j = i+1; j <= n ; j++)
    24             {
    25                 if(a[i]==a[j])
    26                 dp[i][j] = dp[i+1][j-1]+2;
    27                 dp[i][j] = max(dp[i][j],max(dp[i+1][j],dp[i][j-1]));
    28             }
    29         }
    30         int ans=1;
    31         for(i = 1; i < n ; i++)
    32         ans = max(ans,dp[1][i]+dp[i+1][n]);
    33         printf("%d
    ",ans);
    34     }
    35     return 0;
    36 }
    View Code
  • 相关阅读:
    类和接口的区别
    ref 和out的区别
    重载 重写 多态区别
    UML种类与类的关系
    Window.open() 全攻略
    C#委托
    RT Diagnostics Routines
    tar.bz2 解压命令。
    教你10招最有效防电脑辐射方法
    预处理,编译, 优化, 汇编, 链接
  • 原文地址:https://www.cnblogs.com/shangyu/p/3323992.html
Copyright © 2011-2022 走看看