PTA_L1-059ベン(20点)をノック

ベンノックL1-059

早く寝ボディケアのコード農家を促す毎日自称「ビッグベンV」男、リングベルマイクロブログがあります。ベルを鳴らすためにいくつかの楽しみを追加するには、だけでなく、悪い、いくつかの古代の詩を変更します。バート・変更の方法は次のとおりです。言葉に変更文の終わり、古代の詩は韻「オング」を押して検索するためにオンラインに「ベンをノック。」例えば、有名な唐の詩人李彼は言っている:「Xunzhangzhaiju古い彫刻昆虫アリア時にカーテン吊りヒスイの弓」「ワーム」(チョン)および(ゴング)「ボウが」韻「オング」押され、。この詩がに悪化していたので、「Xunzhangzhaiju古い彫刻昆虫、アリアはカーテンがベンをノックしたとき。」

あなたはに悪い韻文「オング」自動的にプレスにプログラムを書くためにあなたを求めて、詩の言葉の多くを与えている「ベンをノック。」

入力フォーマットは:
入力は、まず、第1行のNに20以下の正の整数を与えられています 次いで、所与のピンイン古代詩のN行は、最後の部分は、期間終了,,コンマで区切られた、2つに分割されています。隣接するワード綴りの間のスペースで区切られています。タイトルはアルファベットの各文字がこれ以上6文字以上、文字の各行の長さの合計が100を超えていないことを保証しないし、少なくとも三つの言葉の詩の最後の部分。

出力フォーマット:
各ラインの詩、それが圧力「オング」韻か否かが判断されます。すなわち、二つの単語の上下端が終わる「オング」です。この圧力は、悪い面のタイトルの変更、出力フォーマットに入力に従って韻、次に出力方法であれば、そうでない場合文をスキップされた出力をスキップ。

サンプル入力:

5
魯迅張ZHAIチュラオスディアオチョン、シャオ越ダンリアンGUAゆうゴング。
CAI BI WO天盛尤勇、銭ジンサンジンフアンFU LAI。
雪Zhui ROU志レン魏栄、ANシャオチェン・ジンシュウ魏ロング。
ズオ祚興陳鳳YE YE、GUI唐華ルーXI PAN洞。
REN西安華羅GUI、YEチュン単経香港。

出力例:

ZHAI張挙ラオスディアオシュンチョン、シャオ越ダン聯橋ベン忠。
スキップ
雪Zhui ROU志栄魏レン、AN橋ベン忠シャオチェンジン。
スキップ
スキップ

アイデア:
文に文字列型、終了が1オングとしてマークされている場合、とき最後、0ではないので、二つのマーカーのf1とf2の定義(f1の前でマークオングコンマ、オング後のF2マーク)という
とき(F1 && F2)の代わりには、韻を交換する「オング」の後に三つの言葉を充電し、そうでない場合はそのまま出力する「スキップ」しません。

完全なコード:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    getchar();                  //把回车字符吞掉
    while(n--)
    {
        string s;
        getline(cin,s);
        //不能用cin>>s;输入,因为cin遇到空格会中断
        int len=s.size();
        int f1=0,f2=0;          //标记
        for(int i=0;i<len;i++)
        {
            if(s[i]==',')
            {
                if(s[i-3]=='o' && s[i-2]=='n' && s[i-1]=='g')
                {
                    f1=1;
                }
                break;
            }
        }
        if(s[len-4]=='o' && s[len-3]=='n' && s[len-2]=='g') //s[len-1]是'.'
        {
            f2=1;
        }
        int ans=0;                     //计数器
        int bet;                       //用来记录下标
        for(int i=len-1;i>=0;i--)       //到这遍历
        {
            if(s[i]==' ')
            {
                ans++;
                bet=i;                 //记录是空格的下标(最后一次记录的是倒数第三个单词前面那个空格的下标)
            }
            if(ans==3)                //最后三个单词
            {
                break;
            }
        }
        if(f1&&f2)
        {
            for(int i=0;i<bet;i++)
            {
                cout<<s[i];
            }
            cout<<" qiao ben zhong."<<endl;     //"qiao ben zhong."前面有一个空格
        }
        else
        {
            cout<<"Skipped"<<endl;
        }
    }
    return 0;
}

元の質問へのリンク:
https://pintia.cn/problem-sets/994805046380707840/problems/1111914599412858880

公開された87元の記事 98ウォンの賞賛 ビュー4950

おすすめ

転載: blog.csdn.net/qq_45856289/article/details/104876058