1 条题解

  • 0
    @ 2046-1-30 5:25:17

    【深基3.习9】[COCI2006-2007#2] ABC

    解题思路

    升序排序三个数,使下标 0、1、2 分别代表 A、B、C。按第二行字母字符串中的顺序访问数组。

    正确性说明

    排序确定字母到数值的唯一对应;逐字母取值恰好得到指定排列。

    易错点

    第二行字母无空格;不要按原输入顺序给数命名 A、B、C。

    复杂度

    时间 O(1),空间 O(1)。

    参考代码(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
        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++) {
            if (i)
                cout << " ";
            cout << a[s[i] - 'A'];
        }
        cout << "\n";
        return 0;
    }
    
    • 1