zoukankan      html  css  js  c++  java
  • 牛客网 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按照被偷换的字典序做出的试卷答案?

    输入描述:

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

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

    接下来的 n 行,每行有两个字符串s1,s2s1,s2,之间以空格分割,表示题目中的两个单词。
     
    1n10001≤n≤1000
    1|s1|,|s2|10001≤|s1|,|s2|≤1000

    输出描述:

    对于每一道题,在一行输出其答案:如果s1<s2s1<s2 输出 "<";如果s1>s2s1>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

    输出

    复制
    >
    <
    =
    #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(">
    ");
                    break;
                }
                else if(v<0)
                {
                    printf("<
    ");
                    break;
                }
            }
            if(j == root)printf("=
    ");
        }
        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
    */
  • 相关阅读:
    【TYVJ1728】【洛谷P3369】—普通平衡树(Splay写法)
    【BZOJ2388】—旅行规划(分块+凸包)
    【BZOJ3674】—可持久化并查集加强版(可持久化并查集)
    【模板】树链剖分+换根
    【CQOI2007】【BZOJ1257】【洛谷P2261】余数求和(整除分块)
    Old Driver Tree(ODT 老驱动树)
    【CodeForces-896C】— Willem, Chtholly and Seniorious(ODT老驱动树)
    【BZOJ2238】—MST(树链剖分+最小生成树)
    13.PHP_ThinkPHP
    Win64 驱动内核编程-33.枚举与删除对象回调
  • 原文地址:https://www.cnblogs.com/RootVount/p/10632678.html
Copyright © 2011-2022 走看看