杭電OJ 2029解題心得

2372 ワード

(元MyBlog)

タイトルの説明


Problem Description


「回文列」は正読みと反読みが同じ文字列で、例えば「level」や「noon」などが回文列です.読み込んだ文字列が「返信」であるかどうかを判断するプログラムを書いてください.

Input


入力には複数のテストインスタンスが含まれ、入力データの最初の行は正の整数nであり、テストインスタンスの個数を表し、後にn文字列が続く.

Output


文字列がエコー列である場合は「yes」を出力、そうでない場合は「no」を出力する.

Sample Input

  • 4
  • level
  • abcde
  • noon
  • haha

  • Sample Output

  • yes
  • no
  • yes
  • no

  • 原題リンクProblem-2029

    問題を解く構想.


    この問題は、文字列が後から読むのと後から読むのと同じ文字順であることを簡単に判断することです.
  • 法一、文字列の後読みへのシーケンスと後から前読みのシーケンスを1つ比較することで、答え
  • が得られる.
  • 法二、文字列を半減してから比較すると、方法1
  • と同様である.
  • 法3は、現在の文字列の逆順序となるように別の文字列を構築し、2つの文字列が
  • に等しいかどうかを比較する.

    この問題のコード


    このコードはコンテナストレージを使用し、reverse関数を使用して元の文字列の逆順序文字列を取得します.
    #include 
    #include 
    #include 
    using namespace std;
    int main ()
    {
        int n;
        cin>>n;
        for(int i=0;i>s;
            string s1=s;
            reverse(s1.begin(),s1.end());
            if(s1==s) cout<

    小結


    コンテナstringを使用すると問題が多くなり、ACMや他のプログラム設計コンテストではC++STLクラスライブラリの使用がプログラムを簡素化し、コンテストをより面白くする(個人的な観点)ため、C++選手にとってSTLは欠かせない利剣であることがわかる.

    類似問題(回文数)


    ブルーブリッジカップ基礎回文数


    問題の説明


    1221は非常に特殊な数で、彼は左から読むのと右から読むのと同じで、プログラミングはこのような4桁の10進数をすべて求めます.

    出力フォーマット


    条件を満たす4桁の10進数を小さい順に出力
  • この2日間ブルーブリッジネットワークがメンテナンスされているため、テーマのリンクに入ることができません.後期に空席を記入するのを待っています.許してください.

  • 問題を解く構想.


    この問題は相対的にずっと簡単で、直接問題の意味によって、それから4桁の各位を分離して比較して、答えを出すことができます
    題意を変更して数を入力し、その数が回文数(回文数定義が回文文字列に似ている)であるかどうかを判断すると、前の問題とほぼ同じになります

    エコーコード

    #include 
    using namespace std;
    int main ()
    {
        int i;
        for(i=1000;i<10000;i++)
        {
            if(((int)i/1000==(i%10))&&(int((i%1000)/100)==(int(i%100)/10)))
                cout<

    交友欄


    詳細なITに関するお問い合わせは、WeChatの公式アカウントDeepBlueTeamに注目するか、QQ群577047300(I&T)に注目して、皆さんの参加を歓迎してください.