• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            poj1159

            Palindrome
            Time Limit: 3000MS Memory Limit: 65536K
            Total Submissions: 40443 Accepted: 13741

            Description

            A palindrome is a symmetrical string, that is, a string read identically from left to right as well as from right to left. You are to write a program which, given a string, determines the minimal number of characters to be inserted into the string in order to obtain a palindrome.

            As an example, by inserting 2 characters, the string "Ab3bd" can be transformed into a palindrome ("dAb3bAd" or "Adb3bdA"). However, inserting fewer than 2 characters does not produce a palindrome.

            Input

            Your program is to read from standard input. The first line contains one integer: the length of the input string N, 3 <= N <= 5000. The second line contains one string with length N. The string is formed from uppercase letters from 'A' to 'Z', lowercase letters from 'a' to 'z' and digits from '0' to '9'. Uppercase and lowercase letters are to be considered distinct.

            Output

            Your program is to write to standard output. The first line contains one integer, which is the desired minimal number.

            Sample Input

            5
            Ab3bd

            Sample Output

            2
            這題跟編輯距離類似
            由于自己一點思路也沒有
            所以網上找了找題解

            方法1:f[i][j]表示從下標i到下標j最少添加幾個字符構成回文


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

            方法2:求該串與其反串的最長公共子串的長度,最少添加的次數就是串長減子串長
            我用第二種方法做的
             
             1#include<stdio.h>
             2#include<string.h>
             3#include<math.h>
             4#define MAX 5005
             5int len,i,j;
             6char s[MAX],s1[MAX];
             7short f[MAX][MAX];
             8int max(int a,int b)
             9{
            10    if (a>b) return a; else return b;
            11}

            12int main()
            13{
            14    scanf("%d",&len);
            15    scanf("%s",&s);
            16    for (i=len-1;i>=0 ;i-- )
            17    {
            18        s[i+1]=s[i];
            19    }

            20    for (i=1;i<=len ;i++ )
            21    {
            22        s1[len-i+1]=s[i];
            23    }

            24    f[0][0]=0;
            25    for (i=1;i<=len ;i++ )
            26    {
            27        for (j=1;j<=len ;j++ )
            28        {
            29            if (s[i]==s1[j])
            30            {
            31                f[i][j]=max(f[i-1][j-1]+1,f[i][j]);
            32            }

            33            f[i][j]=max(f[i][j],f[i-1][j]);
            34            f[i][j]=max(f[i][j],f[i][j-1]);
            35        }

            36    }

            37    printf("%d\n",len-f[len][len]);
            38    return 0;
            39}

            40//當前狀態僅與上一層狀態有關,可以用滾動數組優化
            41

            我寫的比較惡心,沒用的東西太多
            Orz大神
             

            posted on 2012-02-20 18:34 jh818012 閱讀(338) 評論(0)  編輯 收藏 引用

            <2025年7月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            導航

            統計

            常用鏈接

            留言簿

            文章檔案(85)

            搜索

            最新評論

            • 1.?re: poj1426
            • 我嚓,,輝哥,,居然搜到你的題解了
            • --season
            • 2.?re: poj3083
            • @王私江
              (8+i)&3 相當于是 取余3的意思 因為 3 的 二進制是 000011 和(8+i)
            • --游客
            • 3.?re: poj3414[未登錄]
            • @王私江
              0ms
            • --jh818012
            • 4.?re: poj3414
            • 200+行,跑了多少ms呢?我的130+行哦,你菜啦,哈哈。
            • --王私江
            • 5.?re: poj1426
            • 評論內容較長,點擊標題查看
            • --王私江
            久久99精品国产一区二区三区| 亚洲AV乱码久久精品蜜桃| 亚洲七七久久精品中文国产| 无码任你躁久久久久久| 中文字幕久久精品无码| 99久久久精品| 一级女性全黄久久生活片免费 | 一本久久知道综合久久| 久久精品国产亚洲AV无码偷窥| 热re99久久精品国99热| 中文精品99久久国产 | 色婷婷噜噜久久国产精品12p| 久久久久人妻一区二区三区| 久久国产高潮流白浆免费观看| 久久亚洲精品无码观看不卡| 亚洲第一极品精品无码久久| 色综合合久久天天综合绕视看 | 色综合久久最新中文字幕| 亚洲日本va午夜中文字幕久久| 精品午夜久久福利大片| 久久久久亚洲精品男人的天堂| 国产亚洲精品自在久久| 国产精品久久久久免费a∨| 国产精品天天影视久久综合网| 久久久久久久久久久精品尤物| 国产激情久久久久影院| 狠狠狠色丁香婷婷综合久久俺| 精品久久久一二三区| 久久久WWW成人免费毛片| 69国产成人综合久久精品| 午夜精品久久久久久久| 99久久国产宗和精品1上映| 久久夜色撩人精品国产| 国产AV影片久久久久久| 久久综合久久综合久久综合| 久久99精品国产一区二区三区| 91精品国产高清久久久久久io| 99久久香蕉国产线看观香| 伊人 久久 精品| 怡红院日本一道日本久久 | 久久国产精品久久久|