美文网首页
动态规划之回文数组

动态规划之回文数组

作者: 落幕12 | 来源:发表于2019-05-07 16:39 被阅读0次

    动态规划之回文数组

    /*给定一个长度为n(n <= 1000)的字符串A,求插入最少多少个字符使得它变成一个回文串。*/

    #include

    #include<string>˙

    using namespace std;

    intmin(inti,intj)

    {

    returni<=j?i:j;

    }

    int main()

    {

    string n;

    intd[100][100]={0};

    cin>>n;

    intlen=n.length();

    /* for(int i=len-1;i>=0;i--)//从后面开始比较

    {

    for(int j=i;j

    {

    if(n[i]==n[j])

    d[i][j]=d[i+1][j-1];

    else 

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

    }

    }*/

    for(intk=1;k<=len-1;k++)//间隔

    {

    for(inti=0;i+k<=len;i++)

    {

    intj=i+k;

    if(n[i]==n[j])//如果两个字母相等则不用添加字母 

    d[i][j]=d[i+1][j-1];

    else//如果不相等则有两种情况。1:加在左边。2:加在右边

    d[i][j]=min(d[i+1][j],d[i][j-1])+1;//+1表示添加了一个字母

    }

    }

    cout<

    return 0;

    }

    相关文章

      网友评论

          本文标题:动态规划之回文数组

          本文链接:https://www.haomeiwen.com/subject/oxuiuqtx.html