CSL的英语考试
链接:https://ac.nowcoder.com/acm/contest/551/B
来源:牛客网
CSL 为了备战即将到来的六级考试,在外面报了一个英语培训班。经过了一学期的学习后,英语老师决定要对 CSL 的学习成果进行检测。老师准备了一份卷子,考虑到 CSL 的英语水平,卷子上只有 n 道判断题,题目是比较两个英语单词的大小。
两个单词的大小是用其字典序来衡量的。所谓字典序就是空字符<`a'<`b'<`c'…`x'<`y'<`z'空字符<`a'<`b'<`c'…`x'<`y'<`z'。
两个单词在比较大小时,会从首字母开始比起,如果两个字母相等则继续比较下一个,如果不等则按照字典序判断大小。举例来说 world 和 wolf 比较:第一次比较首字母,两个单词的首字母都是 w,故继续比较第二个字母。两个单词的第二个字母都是 o,故继续比较第三个字母。r 在字典序中是大于 l 的,因此 world 是大于 wolf 的。
遗憾的是 CSL 记不住字典序,只能把它打到小抄上。而 CSL 的队友偷偷更换了 CSL 的小抄。聪明的你是否能够回答出CSL按照被偷换的字典序做出的试卷答案?
两个单词的大小是用其字典序来衡量的。所谓字典序就是空字符<`a'<`b'<`c'…`x'<`y'<`z'空字符<`a'<`b'<`c'…`x'<`y'<`z'。
两个单词在比较大小时,会从首字母开始比起,如果两个字母相等则继续比较下一个,如果不等则按照字典序判断大小。举例来说 world 和 wolf 比较:第一次比较首字母,两个单词的首字母都是 w,故继续比较第二个字母。两个单词的第二个字母都是 o,故继续比较第三个字母。r 在字典序中是大于 l 的,因此 world 是大于 wolf 的。
遗憾的是 CSL 记不住字典序,只能把它打到小抄上。而 CSL 的队友偷偷更换了 CSL 的小抄。聪明的你是否能够回答出CSL按照被偷换的字典序做出的试卷答案?
输入描述:
第一行有一个整数 n ,表示卷子上题目的数量。
第二行有 26 个不同的英文小写字母(a - z),之间以空格分割,表示新的字典序。
接下来的 n 行,每行有两个字符串s1,s2s1,s2,之间以空格分割,表示题目中的两个单词。
1≤n≤10001≤n≤1000
1≤|s1|,|s2|≤10001≤|s1|,|s2|≤1000
1≤|s1|,|s2|≤10001≤|s1|,|s2|≤1000
输出描述:
对于每一道题,在一行输出其答案:如果s1<s2s1<s2 输出 "<";如果s1>s2s1>s2 输出 ">",否则输出 "="。
示例1
输出
复制> < =
题解:该题就是比较字符串,但是得按照所给字典序来比较
#include<cstdio> #include<algorithm> #include<iostream> using namespace std; int main() { int n; char z[30]; char a[1010],b[1010]; cin>>n; for(int i=0;i<26;i++) cin>>z[i]; while(n--) { scanf("%s%s",a,b); int k=0,f=0; for(int i=0;a[i]!='\0'||b[i]!='\0';i++) { if(a[i]!=b[i]) { for(int j=0;j<26;j++) { if(a[i]==z[j]) k=j; if(b[i]==z[j]) f=j; } break; } } if(k>f) cout<<">"<<endl; else if(k<f) cout<<"<"<<endl; else cout<<"="<<endl; } return 0; }