Codeforcesラウンド#603(本部2)B. PINコード

リンク:

https://codeforces.com/contest/1263/problem/B

質問の意味:

PINコードは正確に4桁の数字から成る文字列です。可能なPINコードの例:7013、0000と0990.くださいノートPINコードでも0で、任意の数字で始めることができます。

polycarpが有するn個(2≤n≤10)銀行カード、i番目のカードのPINコードは、PIです。

polycarpは最近、別のカードに異なるPINコードを設定した方がよいという勧告を読みました。こうして彼は、すべてのn個のコードが異なるとなるように、彼のカードのPINコードの桁の最小数を変更したいです。

正式に、一の工程で、のpolycarpは、i番目のカード(1≤i≤n)、そのPINコードPIを一つ選択位置(1​​〜4)ピック、および任意の他のこの位置に数字を変更します。彼はすべてのPINコードが異なるとなるような最小桁数を変更する必要があります。

polycarpはすぐにこの問題を解決しました。あなたはそれを解決することはできますか?

アイデア:

N個の最大値は、直接暴力を変更する、10であります

コード:

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

int main()
{
    int t;
    cin >> t;
    while(t--)
    {
        int n;
        string s[10];
        map<string, int> Mp;
        cin >> n;
        for (int i = 0;i < n;i++)
            cin >> s[i], Mp[s[i]]++;
        int ans = 0;
        for (int i = 0;i < n;i++)
        {
            if (Mp[s[i]] > 1)
            {
                ans++;
                Mp[s[i]]--;
                for (int j = 0;j < 10;j++)
                {
                    s[i][0] = j+'0';
                    if (Mp[s[i]] == 0)
                        break;
                }
                Mp[s[i]]++;
            }
        }
        cout << ans << endl;
        for (int i = 0;i < n;i++)
            cout << s[i] << endl;
    }

    return 0;
}

おすすめ

転載: www.cnblogs.com/YDDDD/p/12053857.html