列表

详情


NC23990. CSL 的英语考试

描述

CSL 为了备战即将到来的六级考试,在外面报了一个英语培训班。经过了一学期的学习后,英语老师决定要对 CSL 的学习成果进行检测。老师准备了一份卷子,考虑到 CSL 的英语水平,卷子上只有 n 道判断题,题目是比较两个英语单词的大小。
两个单词的大小是用其字典序来衡量的。所谓字典序就是

两个单词在比较大小时,会从首字母开始比起,如果两个字母相等则继续比较下一个,如果不等则按照字典序判断大小。举例来说 world 和 wolf 比较:第一次比较首字母,两个单词的首字母都是 w,故继续比较第二个字母。两个单词的第二个字母都是 o,故继续比较第三个字母。r 在字典序中是大于 l 的,因此 world 是大于 wolf 的。

遗憾的是 CSL 记不住字典序,只能把它打到小抄上。而 CSL 的队友偷偷更换了 CSL 的小抄。聪明的你是否能够回答出CSL按照被偷换的字典序做出的试卷答案?

输入描述

第一行有一个整数 n ,表示卷子上题目的数量。

第二行有 26 个不同的英文小写字母(a - z),之间以空格分割,表示新的字典序。

接下来的 n 行,每行有两个字符串s_1,s_2,之间以空格分割,表示题目中的两个单词。



输出描述

对于每一道题,在一行输出其答案:如果 输出 "<";如果 输出 ">",否则输出 "="。

示例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

输出:

>
<
=

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

pypy3(pypy3.6.1) 解法, 执行用时: 299ms, 内存消耗: 72444K, 提交时间: 2020-04-18 09:53:32

n=int(input())


def judge(x,y):
    global alpha
    for i in range(len(x)):
        x[i]=alpha[x[i]]
    for i in range(len(y)):
        y[i]=alpha[y[i]]
    x="".join(x)
    y="".join(y)
    if x==y:
        print("=")
    elif x>y:
        print(">")
    else:
        print("<")
        


alpha={}
s=input().split()
for i in range(26):
    alpha[s[i]]=chr(ord('a')+i)
#print(alpha)
for i in range(n):
    x,y=input().split()
    #print(x)
    
    judge(list(x),list(y))
    

C++11(clang++ 3.9) 解法, 执行用时: 89ms, 内存消耗: 488K, 提交时间: 2020-04-14 20:39:52

#include<bits/stdc++.h>
using namespace std;

map<char,int>arr;

int main()
{
	int n;
	cin>>n;
	char c;
	for(int i = 'a';i <= 'z'; i++)
	{
		cin>>c;
		arr[c]=i;
	}
	for(int j = 0;j < n;j++)
	{
		string s1,s2;
		cin>>s1>>s2;
		for(int i = 0;i < s1.size();i++)
			s1[i] = arr[s1[i]];
		for(int i = 0;i < s2.size();i++)
			s2[i] = arr[s2[i]];
		if(s1 > s2)
			cout<<">"<<endl;
		else if(s1 == s2)
			cout<<"="<<endl;
		else
			cout<<"<"<<endl;
	}
	return 0;
} 

C++14(g++5.4) 解法, 执行用时: 61ms, 内存消耗: 604K, 提交时间: 2019-04-10 21:34:56

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int i,T;
	char t[2];
	char M[26];
	cin>>T;
	string a,b;
	for(i=0;i<26;i++)
		cin>>t,M[t[0]-'a']='A'+i;
	while(T--)
	{
		for(i=0;i<26;i++)
		{
			cin>>a>>b;
			for(i=0;i<26;i++)
				replace(a.begin(),a.end(),(char)('a'+i),M[i]),replace(b.begin(),b.end(),(char)('a'+i),M[i]);
			puts(a<b?"<":a>b?">":"=");
		}
	}
	return 0;
}

Python3(3.5.2) 解法, 执行用时: 300ms, 内存消耗: 3436K, 提交时间: 2019-03-31 11:36:34

n=int(input())
d={}
s=input().split()
for i in range(26):
    d[s[i]]=chr(i+65)
for k in range(n):
    x=input().split()
    a=''
    b=''
    for i in x[0]:
        a+=d[i]
    for i in x[1]:
        b+=d[i]
    if a>b:print('>')
    elif a<b:print('<')
    else:print('=')

上一题