• <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久久精品| 欧美激情精品久久久久久久九九九| 久久香综合精品久久伊人| 精品精品国产自在久久高清 | 久久精品中文字幕大胸| 色诱久久久久综合网ywww| 久久久久亚洲精品天堂久久久久久 | 久久精品国产福利国产秒| 伊人久久一区二区三区无码| AAA级久久久精品无码片| 香港aa三级久久三级老师2021国产三级精品三级在 | 亚洲а∨天堂久久精品9966| 91精品国产高清久久久久久io| 四虎久久影院| 久久久久国产一区二区| 一本久久久久久久| 久久91综合国产91久久精品| 性高湖久久久久久久久| 中文字幕无码精品亚洲资源网久久| 精品国产综合区久久久久久| 91久久精品91久久性色| 久久精品亚洲精品国产色婷| 国产成人无码精品久久久性色| 久久综合九色综合欧美就去吻| 亚洲一区二区三区日本久久九| 久久免费视频网站| 久久久精品免费国产四虎| 丁香狠狠色婷婷久久综合| 久久香蕉国产线看观看精品yw| 少妇久久久久久久久久| 久久久久久无码Av成人影院| 精品久久久久久亚洲精品| 国产成人精品久久二区二区| 久久天堂电影网| 久久综合视频网站| 97视频久久久|