#36575: C++簡單寫法更正


a155328@stdmail.nssh.ntpc.edu. ... (王宥崴)

學校 : 南山中學
編號 : 204604
來源 : [1.34.242.127]
最後登入時間 :
2024-11-03 19:52:55
g006. 密碼備忘錄 (Password) -- TOI練習賽202105新手組第3題 | From: [114.44.102.202] | 發表日期 : 2023-07-24 21:29

#include <iostream>
using namespace std;
int main() {
    string password;
    cin >> password;
    int count[26] = {0};
    for (char c : password) {
        count[c - 'A']++;
    }
    int n = 0;
    for (int i = 0; i < 26; i++) {
        if (count[i] > 0) {
            n++;
        }
    }
    char s[n];
    int count_2[n];
    int list = 0;
    for (int i = 0; i < 26; i++) {
        if (count[i] > 0) {
            s[list] = 'A' + i;
            count_2[list] = count[i];
            list++;
        }
    }
    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - i - 1; j++) {
            if (count_2[j] < count_2[j + 1]) {
                int temp = count_2[j];
                count_2[j] = count_2[j + 1];
                count_2[j + 1] = temp;
                char tempChar = s[j];
                s[j] = s[j + 1];
                s[j + 1] = tempChar;
            } else if (count_2[j] == count_2[j + 1] && s[j] > s[j + 1]) {
                int temp = count_2[j];
                count_2[j] = count_2[j + 1];
                count_2[j + 1] = temp;

                char tempChar = s[j];
                s[j] = s[j + 1];
                s[j + 1] = tempChar;
            }
        }
    }
    for (int i = 0; i < n; i++) {
            cout << s[i];
    }

    cout << endl;
    return 0;
}

 
ZeroJudge Forum