参考博客:

https://blog.csdn.net/mitsuha_/article/details/76690634

https://blog.csdn.net/u014142379/article/details/51761551

解题过程:

先看了第一位大佬的博客,了解了这题的解法,但是没看代码。这题用动态规划,dp[i][j]表示从字符串第i位到第j位最小改变次数。可以用dp[i + 1][j], dp[i][j - 1], dp[i + 1][j - 1]推出dp[i][j]。但是自己敲了代码只过了90%的数据,因为按传统循环方式for (i = 1; i <= n; i++){for (int j = 1; j <= n; j++)}的话。dp[i][j]所用到的dp[i + 1][j]和dp[i + 1][j - 1]还没有循环到。处理起来出了问题。这时候就发现第二位大佬写的代码for循环的方式很好。代码如下:

  • 动态规划

    1323 回文字符串 AC G++ 0ms 0MB
    #include "bits/stdc++.h"
    using namespace std;
    const int INF = 0x3f3f3f3f;
    char s[];
    int dp[][];
    int main() {
    scanf("%s", s + );
    int n = strlen(s + );
    for (int i = n; i; i--)
    for (int j = i + ; j <= n; j++) {
    if (s[i] == s[j]) {
    dp[i][j] = dp[i + ][j - ];
    } else {
    dp[i][j] = min(min(dp[i + ][j], dp[i][j - ]), dp[i + ][j - ]) + ;
    }
    }
    printf("%d\n", dp[][n]);
    return ;
    }

    因为推出dp[i][j]用到的i都大于等于i,用到的j都小于等于j。所以从大到小遍历i,从小到大遍历j。当i到j的长度小于等于2时,因为dp[i + 1][j - 1]、dp[i + 1][j]、dp[i][j - 1]总是0,所以就算j > i 也不影响结果正确性。

HihoCode-1323-回文字符串的更多相关文章

  1. hiho 1323 : 回文字符串 dp

    #1323 : 回文字符串 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个字符串 S ,最少需要几次增删改操作可以把 S 变成一个回文字符串? 一次操作可以在任 ...

  2. hihocoder 162周 1323 : 回文字符串

    hihocoder1323 : 回文字符串(162周) 题目链接 思路: dp; ac代码: #include<iostream> #include<cstdio> #incl ...

  3. hihocoder 1323 回文字符串(字符串+dp)

    题解: 比较水的题目 dp[i][j]表示[i...j]最少改变几次变成回文字符串 那么有三种转移 dp[i][j] = dp[i+1][j-1] + s[i] != s[j] dp[i][j] = ...

  4. hihocoder 1323 - 回文字符串 - [hiho一下162周][区间dp]

    用dp[i][j]表示把[i,j]的字符串str改写成回文串需要的最小操作步数. 并且假设所有dp[ii][jj] (ii>i , jj<j)都为已知,即包括dp[i+1][j].dp[i ...

  5. 【HIHOCODER 1323】回文字符串(区间DP)

    描述 给定一个字符串 S ,最少需要几次增删改操作可以把 S 变成一个回文字符串? 一次操作可以在任意位置插入一个字符,或者删除任意一个字符,或者把任意一个字符修改成任意其他字符. 输入 字符串 S. ...

  6. [LeetCode] Valid Palindrome 验证回文字符串

    Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignori ...

  7. 回文字符串的判断!关于strlen(char * str)函数

    #include <stdio.h> #include <string.h> int ishuiw(char * p); int main() { ;//true-false接 ...

  8. NYOJ_37.回文字符串 (附滚动数组)

    时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba".当然,我们给你的问 ...

  9. 131. 132. Palindrome Partitioning *HARD* -- 分割回文字符串

    131. Palindrome Partitioning Given a string s, partition s such that every substring of the partitio ...

  10. leetcode:Longest Palindromic Substring(求最大的回文字符串)

    Question:Given a string S, find the longest palindromic substring in S. You may assume that the maxi ...

随机推荐

  1. 1月18日 LCA专项训练

    A. Lorenzo Von Matterhorn B.Minimum spanning tree for each edge C.Misha, Grisha and Underground D.Fo ...

  2. 关于图算法 & 图分析的基础知识概览

    网址:https://learning.oreilly.com/library/view/graph-algorithms-/9781492060116/ 你肯定没有读过这本书,因为这本书的发布日期是 ...

  3. 微信支付的Demo

    是在一个子项目完成的, 依赖: <dependencies> <!-- spring-boot--> <dependency> <groupId>org ...

  4. WebAPI异常捕捉处理,结合log4net日志(webapi框架)

    一:异常捕捉处理 首先,在我们需要区分controller的类型.是全部基层controller,还是Apicontroller.(当然一般API框架,用的都是Apicontroller).两者异常处 ...

  5. springboot +Thymeleaf+UEditor整合记录

    1,ueditor官网下载:https://ueditor.baidu.com/website/download.html  下载相应的工具包和源码,ps:源码放到工程中 2,解压放到放到项目中,sp ...

  6. 17.3.12--urllib2模块

    1---urllib2是非常强大的Python网络资源访问模块,它的功能和urllib模块相似 python标准库中的urllib2模块可以说是urlib模块的一个升级的复杂版,不需要另外下载, 比如 ...

  7. springboot+mybatis+通用mapper+多数据源(转载)

    1.数据库准备 数据库表我们在springboot-mybatis数据之外,新建数据库springboot-mybatis2: springboot-mybatis数据库中有t_class表: spr ...

  8. MCMC学习

    看了这个文档 结合随机矩阵的知识, 更清楚了一点. https://www.cnblogs.com/xbinworld/p/4266146.html

  9. mysql统计指定数据库的各表的条数

    mysql统计指定数据库的各表的条数 SELECT table_schema,table_name,table_rows,CREATE_TIME FROM TABLES WHERE TABLE_SCH ...

  10. BZOJ2733 [HNOI2012]永无乡(并查集+线段树合并)

    题目大意: 在$n$个带权点上维护两个操作: 1)在点$u,v$间连一条边: 2)询问点$u$所在联通块中权值第$k$小的点的编号,若该联通块中的点的数目小于$k$,则输出$-1$: 传送门 上周的模 ...