zoukankan      html  css  js  c++  java
  • 16级C程序设计竞赛C题

    问题 C: 回文
    时间限制: 1 Sec  内存限制: 128 MB
    提交: 74  解决: 36
    [提交][状态][讨论版]
    题目描述

            给定一个字符串,你可以对字符串做任意改动,你可以在任意地方增加一个字符、删除一个字符或者改变一个字符。但是不同的操作所花费的代价也是不同的,增加和删除所付出的代价为1,直接改变一个字符所花费的代价为2,问最少花费多少能得到一个回文串(回文串就是从左往右读和从右往左是一样的,例如:ABCBA、HIH…)

    输入

           第一行 一个整数T表示接下来有T组数据

           接下来T行 每行输入一个字符串S(S长度小于1000)

    输出

     输出满足题意的最小代价

    样例输入
    3
    CHINESE
    MNBN
    JXUST
    
    样例输出
    4
    1
    4
    
    
     1 #include<iostream>
     2 #include<stdio.h>
     3 #include<algorithm>
     4 #include<string>
     5 #include<string.h>
     6 using namespace std;
     7 string a,s;
     8 int dp[1050][1050];
     9 int main(){
    10     int T;
    11     cin>>T;
    12     while(T--){
    13         memset(dp,0,sizeof(dp));
    14         cin>>a;
    15         int alen=a.length();
    16         s=a;
    17         reverse(s.begin(),s.end());
    18         for(int i=1;i<=alen;i++){
    19             for(int j=1;j<=alen;j++){
    20                 if(a[i-1]==s[j-1]){
    21                     dp[i][j]=dp[i-1][j-1]+1;
    22                 }else{
    23                     dp[i][j]=max(dp[i][j-1],dp[i-1][j]);
    24                 }
    25             }
    26         }
    27         cout<<alen-dp[alen][alen]<<endl;
    28     }
    29     return 0;
    30 }
    
    
    
    
    
    
    
  • 相关阅读:
    2020年天梯赛补题报告
    补提报告...
    2020.11.14天梯赛练习*6 补题
    2020-11-08补题报告
    2020-10-30 — 补题报告
    10-24 补题
    2020.10.17天梯赛练习 和 16 号个人赛 补题报告
    elasticsearch DQL 有关表达式的设计
    tab键和空格键
    emacs配置python开发环境
  • 原文地址:https://www.cnblogs.com/ISGuXing/p/7673919.html
Copyright © 2011-2022 走看看