zoukankan      html  css  js  c++  java
  • 字符串的回文子序列个数

    题目描述

    求一个长度不超过15的字符串的回文子序列个数(子序列长度>=1)。


    输入描述

    输入一个长度不超过15的字符串,字符串均由小写字母表示


    输出描述

    输出其回文子序列个数


    样例输入

    abaa


    样例输出

    10


    注释

    本例中其所有回文子序列为:
    a,b,a,a,aba,aba,aa,aa,aa,aaa
    一个字符串的子序列是指在原字符串上去除某些字符但不破坏余下元素的相对位置(在前或在后)而形成的新字符串。

    #include<iostream>
    #include<string>
    
    using namespace std;
    
    string str,creat="";
    int ans=-1;
    bool used[20]={false};
    
    bool back_forward(string str)
    {
        for(int i=0;i<str.length()/2;i++)
        {
            if(str[i]!=str[str.length()-i-1]) 
                return false;
        }
        return true;
    }
    
    void search(int len, int start)
    {
        if(len<=0)
        {
            if (back_forward(creat)) {/*cout<<creat<<endl;*/ans++;}
            return;
        }
        for(int i=start;i<str.length();i++)
        {
            if (!used[i])
            {
                used[i]=true;
                creat.append(str,i,1);
                search(len-1,i+1);
                used[i]=false;
                creat.erase(creat.length()-1,1);
            }
        }
    }
    
    int main(){
        cin>>str;
        for(int i=0;i<str.length();i++)
            search(i,0);
        if (back_forward(str)) {/*cout<<str<<endl;*/ans++;}
        cout<<ans<<endl;
        return 0;
    }
  • 相关阅读:
    ZOJ-3230-Solving the Problems
    zoj-3410-Layton's Escape
    cin输入超过文本末尾
    sizeof('a')
    WPF TranslatePoint/TransformToVisual 总返回零
    Lock-free multi-threading
    c++0X 用字符串调用函数
    Vim 的c++语法补齐
    Reentrancy VS Thread safe
    内存屏障
  • 原文地址:https://www.cnblogs.com/qianxuejin/p/9004571.html
Copyright © 2011-2022 走看看