zoukankan      html  css  js  c++  java
  • 【最长公共子序列】hdu 1243 反恐训练营

    最长公共子序列:

      dp[i][j] :当前子弹的最大得分,

    if ([i-1]==[j-1])
      dp[i][j]=dp[i-1][j-1]+score[a[i-1]];
    else
      dp[i][j]=max(dp[i-1][j],dp[i][j-1]);

     1 #include <cstdio>
     2 #include <cstring>
     3 
     4 const int MAXN=2000+5;
     5 
     6 char t[MAXN],a[MAXN],b[MAXN];
     7 int dp[MAXN][MAXN];
     8 int score[MAXN];
     9 int n,temp;
    10 
    11 int max(int x,int y){
    12    if(x>y)return x;
    13    return y;
    14 }
    15 
    16 int main()
    17 {
    18     while(scanf("%d",&n)!=EOF){
    19         scanf("%s",t);
    20         for(int i=0;i<n;i++){
    21             scanf("%d",&temp);
    22             score[ t[i] ]= temp;
    23         }
    24         scanf("%s",a);
    25         scanf("%s",b);
    26 
    27         
    28         int len1=strlen(a);
    29         int len2=strlen(b);
    30 
    31         memset(dp,0,sizeof dp);
    32 
    33         for(int i=1;i<=len1;i++){
    34             for(int j=1;j<=len2;j++){
    35                 if (a[i-1]==b[j-1])
    36                     dp[i][j]=dp[i-1][j-1]+score[a[i-1]]; 
    37                 else 
    38                     dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
    39             }
    40         }
    41         printf("%d
    ",dp[len1][len2] );
    42     }
    43 }
  • 相关阅读:
    HDU
    Hdu 5072 Coprime(容斥+同色三角形)
    HDU
    HTML常用基础标签
    简单session实现
    前端中的 IoC 理念
    怎样做页面界限
    Reset 对象属性
    SQL注入
    js:表单校验(获取元素、事件)
  • 原文地址:https://www.cnblogs.com/bruce27/p/4439018.html
Copyright © 2011-2022 走看看