zoukankan      html  css  js  c++  java
  • hihocoder1323 回文字符串

    题意:一个字符串可以进行增删改一个字符,代价都是一,问最少多少代价可以得到回文字符串

    题解:dp[i][j]代表i到j得到回文串的最小代价,可以得到dp式,一开始没写记忆化搜索T了

    #include <bits/stdc++.h>
    #define ll long long
    #define maxn 110
    using namespace std;
    char s[maxn];
    int dp[maxn][maxn];
    inline int f(int l,int r){
        if(l >= r) return 0;
        if(dp[l][r] != -1) return dp[l][r];
        if(s[l] == s[r]) return f(l+1, r-1);
        return dp[l][r] = min(f(l, r-1)+1, min(f(l+1, r)+1, f(l+1, r-1)+1));
    }
    int main(){
        scanf("%s", s);
        memset(dp, -1, sizeof(dp));
        int l = strlen(s);
        cout<<f(0, l-1)<<endl;
        return 0;
    }
  • 相关阅读:
    Docker容器查看ip地址
    抽象工厂模式
    idea插件
    作业统计
    tarjan强连通图分量
    Android动画浅析
    位运算
    mongodb笔记
    依赖倒置原则
    单一职责原则
  • 原文地址:https://www.cnblogs.com/Noevon/p/7295638.html
Copyright © 2011-2022 走看看