Codeforces 932Aパリンドロームスーパーシーケンス(スーパーウォーター)

トピック:

文字列Aが与えられます。文字列Bを見つけます。ここで、Bは回文であり、AはBのサブシーケンスです。

文字列のサブシーケンスは、残りの文字の順序を変更せずに、いくつかの(必ずしも連続しているとは限らない)文字を削除することによって文字列から派生できる文字列です。たとえば、「cotst」は「contest」のサブシーケンスです。

回文は、同じ前方または後方を読み取る文字列です。

文字列Bの長さは最大104である必要があります。そのような文字列が常に存在することが保証されます。

最短の答えを見つける必要はありません。唯一の制限は、文字列Bの長さが104を超えてはならないということです。

入力
最初の行には、小文字のラテン文字で構成される文字列A(1≤| A |≤103)が含まれています。ここで、| A | はAの長さです。

出力
小文字のラテン文字のみで構成されるBを含む1行を出力します。最短の答えを見つける必要はありません。唯一の制限は、文字列Bの長さが104を超えてはならないことです。可能なBが多数ある場合は、それらのいずれかを印刷します。

inputCopy
aba
output
aba
inputCopy
ab
output
aabaa

最初の例では、「aba」は回文である「aba」のサブシーケンスです。

2番目の例では、「ab」は回文である「aabaa」のサブシーケンスです。

題名:

2つの文字列a、bがあります。aはbの部分文字列であり、bは回文文字列であることがわかっています。次に、文字列aを指定して、文字列bを見つけます。

アイデア:

ここでは、条件を満たすa bをランダムに出力するため、aの正と負を2回直接出力します。

コード:

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <cmath>

using namespace std;
const int N=1e5+10;
char a[N];

int main()
{
    ios::sync_with_stdio(false);
    int n;
    while(cin>>a)
    {
        cout<<a;//正着输出一遍
        for(int i=strlen(a)-1;i>=0;i--)//逆过来再输出一遍
            cout<<a[i];
        cout<<endl;
    }
    return 0;
}

おすすめ

転載: blog.csdn.net/Puppet__/article/details/79338606