1 条题解

  • 2
    @ 2023-4-29 14:09:00

    这道题难理解的地方应该是:怎么按照输入的字母来输出对应的数字?

    如果你分别处理 ABCACBBACBCACABCBA 这六种情况,会很麻烦。

    我的做法是,首先使用数组存储数字,因为 C++ 标准库不支持「输入一个变量名,输出这个变量的值」这种反射操作,现在只有 3 个值你还能写几个 if + 手动排序,数据量不确定地多的时候就不行了。

    ASCII 码中大写字母和小写字母分别都是连续的,'A' 的十进制值为 6565,因此只要减去 'A' 就可以访问 0、1、2 了,将这个表达式作为输出时的数组下标即可。

    手动 getchar() 一个个获取字符可能会遇到输入数据中空格数不确定导致的问题,还得特判空格,因此直接使用了 string,它是可以像字符数组一样用下标访问的,你也可以使用字符数组。

    #include <bits/stdc++.h>
    using namespace std;
    int main() {
        int a[3];
        cin >> a[0] >> a[1] >> a[2];
        sort(a, a+3);
        string s;
        cin >> s;
        for(int i = 0; i < 3; i++) {
            cout << a[s[i]-'A'] << ' ';
        }
        return 0;
    }
    
    • 1

    信息

    ID
    3345
    时间
    1000ms
    内存
    125MiB
    难度
    1
    标签
    递交数
    12
    已通过
    9
    上传者