zoukankan      html  css  js  c++  java
  • POJ 3280 Cheapest Palindrome(DP)

    题目链接

    题意 :给你一个字符串,让你删除或添加某些字母让这个字符串变成回文串,删除或添加某个字母要付出相应的代价,问你变成回文所需要的最小的代价是多少。

    思路 :DP[i][j]代表的是 i 到 j 这一段位置变成回文所需的最小的代价。

     1 //3280
     2 #include <stdio.h>
     3 #include <string.h>
     4 #include <iostream>
     5 
     6 using namespace std ;
     7 
     8 char sh[2100] ;
     9 int minn[2100] ;
    10 int dp[2100][2100] ;
    11 
    12 int main()
    13 {
    14     int M,N ;
    15     while(~scanf("%d %d",&N,&M))
    16     {
    17         scanf("%s",sh) ;
    18         getchar() ;
    19         char ch ;
    20         int inser,delet ;
    21         for(int i = 0 ; i < N ; i++)
    22         {
    23             scanf("%c%*c%d %d",&ch,&inser,&delet) ;
    24             minn[ch-'a'] = min(inser,delet) ;
    25             getchar() ;
    26         }
    27         for(int i = M-1 ; i >= 0 ; i--)
    28         {
    29             for(int j = i+1 ; j <= M-1 ; j++)
    30             {
    31                 if(sh[i] == sh[j])
    32                     dp[i][j] = dp[i+1][j-1] ;
    33                 else
    34                     dp[i][j] = min(dp[i+1][j]+minn[sh[i]-'a'],dp[i][j-1]+minn[sh[j]-'a']) ;
    35             }
    36         }
    37         printf("%d
    ",dp[0][M-1]) ;
    38     }
    39     return 0 ;
    40 }
    View Code
  • 相关阅读:
    LeetCode-1-two-sum
    LeetCode-14-longest-common-prefix
    动态规划--矩阵链乘法
    动态规划--装配线调度算法
    LeetCode-9-palindrome-number
    LeetCode-8-string-to-integer-atoi
    LeetCode-7-Reverse Integer
    SElinux用户管理操作
    Minix3信号处理分析
    面对困难
  • 原文地址:https://www.cnblogs.com/luyingfeng/p/3859837.html
Copyright © 2011-2022 走看看