• poj 1159 Palindrome


    呃,一看到关于字符串的题就有点发怵,也不是完全因为字符串,而是对于处理字符串部署很擅长,偶尔错个小地方就要检查上半天,又是还不知道怎么错的,影响心情啊!!

    这题题意是:给出一个字符串,要你求出至少添加多少个字符可以是这个串成为回文穿串。

    大体思路:还是简单dp, dp[i][j] 表示从i到j至少要添加字符个数。转移方程有两种情况,一是如果str[i]== str[j] 的话,则dp[i][j]= dp[i+1][j-1] ;否则不想等的话,

    dp[i][j] = min ( dp[i+1][j] , dp[i][j-1] ) + 1 ;

    代码:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <iostream>
    #include <algorithm>
    #include <queue>
    #define maxm  5003
    #define maxn
    using namespace std ;
    
    int dp[2][maxm] ;
    
    int min ( int x , int y )
    {
        return x > y ? y : x ;
    }
    
    int main()
    {
        int len , i , j , k ;
        char str[maxm] ;
    
        while ( scanf ( "%d" , &len ) != EOF )
        {
            scanf ( "%s" , str );
            memset( dp , 0 , sizeof ( dp ));
    
            for ( i = len - 1 ; i >= 0 ; i-- )
            {
                for ( j = i + 1 ; j < len ; j++ )
                if ( str[i] == str[j] )
                dp[i%2][j] = dp[(i+1)%2][j-1] ;
                else
                dp[i%2][j] = min ( dp[i%2][j-1] , dp[(i+1)%2][j] ) + 1 ;
            }
            printf ( "%d\n" , dp[0][len-1] );
        }
        return 0 ;
    }
  • 相关阅读:
    关于宇宙大爆炸的理论模型
    算法系列2《RSA》
    Codeforces Round #248 (Div. 1)——Nanami&#39;s Digital Board
    Cocos2d-x场景变化相关功能介绍
    NYOJ 745 蚂蚁问题(两)
    quick-cocos2d-x endToLua 退出会卡住
    编程算法
    linux基础知识1
    URAL 1553. Caves and Tunnels 树链拆分
    2014/11/13_ 随想
  • 原文地址:https://www.cnblogs.com/misty1/p/2545356.html
Copyright © 2020-2023  润新知