题目描述
高橋君は友達とチャットで逆さしりとりをすることにしました。 逆さしりとりとは、前の人が言った単語の頭文字で終わる単語を答えるしりとりです。 しかし、高橋君は英単語に自信がないのでこっそり「さかさま辞書」を使うことにしました。
普通の辞書は単語の先頭の文字がABC順になるように並べられており、同じ文字同士の場合はその次の文字がABC順になるように並べられます。 先頭から見ていく普通の辞書順に対して、「さかさま辞書」は後ろの文字から見ていきます。 例えば apple, bee, card は、普通の辞書なら apple → bee → card の順になります。 しかし、「さかさま辞書」では d で終わる card が?1番、apple とbee は同じ e で終わるのでその1つ前が e である bee が?2番、l であるapple が?3番の順になります。
図(a):普通の辞書順に並べた例 図(b):さかさま辞書順に並べた例
高橋君の代わりに「さかさま辞書」を作成し、与えられた単語を「さかさま辞書」順に並べてください。
输入格式
入力は以下の形式で標準入力から与えられる。
$ N $
$ s_{1} $
$ s_{2} $
:
:
$ s_{N} $
- 1行目は、並べる単語数を表す整数N?(1?≦?N?≦?100)?が与えられる。
- 2行目からN行は、並べる単語を表す文字列が1行に1つずつ与えられる。
- i+1行目の文字列?s_isi??の長さは1文字以上?20文字以下で、含まれる文字はアルファベットの小文字のみ(
a -z )です。 - なお、重複する単語が与えられることはありません。
输出格式
入力として与えられた単語を、さかさま辞書順に標準出力に1行ずつ出力せよ。 なお、最後には改行を出力せよ。
题意翻译
题意:
给定N个字符串,将其倒置后按字典序排序,再按顺序输出其原字符串。
感谢@xusiyuan 提供的翻译
输入输出样例
无
?
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
string a[101];
bool cmp(string a,string b){
reverse(a.begin(),a.end());
reverse(b.begin(),b.end());
int AC=a<b;
reverse(a.begin(),a.end());
reverse(b.begin(),b.end());
return AC;
}
int main(){
int n,i;
cin>>n;
for(i=0;i<n;i++){
cin>>a[i];
}
sort(a,a+n,cmp);
for(i=0;i<n;i++){
cout<<a[i]<<endl;
}
return 0;
}
|