牛客网 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 <iostream> #include <cmath> #include <string> #include <cstring> #include <queue> #include <map> using namespace std; char newword[28]; int cmp(char miao, char ying)//比较两个字符之间的大小 { int sign1, sign2, flag1 = 0, flag2 = 0; for(int i = 0; i<27; i++) { if(miao == newword[i]) { sign1 = i; flag1 = 1; } if(ying == newword[i]) { sign2 = i; flag2 = 1; } if(flag1 && flag2)break; } if(sign1>sign2)return 1; else if(sign1 == sign2)return 0; else if(sign1<sign2)return -1; return 0;//因为所有的return都在条件中,虽然所有的样例会过,但是有些平台会报错 } int main() { int n, len1, len2, cnt = 0; char c; cin>>n; newword[0] = '.'; for(int i = 1; i<=26; i++) { cin>>newword[i]; } for(int i = 0; i<n; i++) { char a[1000+8], b[1000+8]; cin >> a >> b; len1 = strlen(a); len2 = strlen(b); if(len1>len2) { for(int j = len1-len2-1; j>=0; j--)//把不足的部分用 . 来代替 { strcat(b, "."); } } else { for(int j = len2-len1-1; j>=0; j--)//把不足的部分用 . 来代替 { strcat(a, "."); } } int j; int root = max(len1, len2); for(j = 0; j<root; j++) { int v = cmp(a[j], b[j]);//比较两个字符之间的大小 if(v == 0)continue; else if(v>0) { printf(">\n"); break; } else if(v<0) { printf("<\n"); break; } } if(j == root)printf("=\n"); } return 0; } /* 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 */