CSL 为了备战即将到来的六级考试,在外面报了一个英语培训班。经过了一学期的学习后,英语老师决定要对 CSL 的学习成果进行检测。老师准备了一份卷子,考虑到 CSL 的英语水平,卷子上只有 n 道判断题,题目是比较两个英语单词的大小。
两个单词的大小是用其字典序来衡量的。所谓字典序就是
空字符< ‘ a ‘<b'<
c’…x'<
y’<`z’。
两个单词在比较大小时,会从首字母开始比起,如果两个字母相等则继续比较下一个,如果不等则按照字典序判断大小。举例来说 world 和 wolf 比较:第一次比较首字母,两个单词的首字母都是 w,故继续比较第二个字母。两个单词的第二个字母都是 o,故继续比较第三个字母。r 在字典序中是大于 l 的,因此 world 是大于 wolf 的。
遗憾的是 CSL 记不住字典序,只能把它打到小抄上。而 CSL 的队友偷偷更换了 CSL 的小抄。聪明的你是否能够回答出CSL按照被偷换的字典序做出的试卷答案?
链接:/acm/contest/551/B
来源:牛客网
输入描述:
第一行有一个整数 n ,表示卷子上题目的数量。
第二行有 26 个不同的英文小写字母(a - z),之间以空格分割,表示新的字典序。
接下来的 n 行,每行有两个字符串s1,s2,之间以空格分割,表示题目中的两个单词。
1≤n≤1000
1≤|s1|,|s2|≤1000
输出描述:
对于每一道题,在一行输出其答案:如果s1>s2 输出 “>”,否则输出 “=”。
示例1
输入
3
a b c d e f g h i j k l m n o p q r s t u v w x y z
world wolf
app apple
panda panda
输出
<>=
利用Map进行字母序的确定,之后根据输入的两个字符串进行计较即可,因为字母序不一定是标准的字母序,所以不能直接比较
AC代码
#include<bits/stdc++.h>using namespace std;map<char,int> m;int main(){int n;cin>>n;getchar();m[' ']=0;for(int i=0;i<26;i++){char temp;cin>>temp;m[temp]=i+1;}getchar();for(int i=0;i<n;i++){string a,b;cin>>a>>b;if(a==b)cout<<"="<<endl;elsefor(int j=0;j<max(a.length(),b.length());j++){if(a[j]==b[j])continue;else if(m[a[j]]<m[b[j]]){cout<<"<"<<endl;break;}else {cout<<">"<<endl;break;}}}return 0;}
如果觉得《CSL的英语考试》对你有帮助,请点赞、收藏,并留下你的观点哦!