白駿c++1235学生番号

6372 ワード

1235学生番号



問題を解く

#include <iostream>
#include <algorithm>
#include <vector>
#include <set>
using namespace std;
void fast_io(void)
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
}
int main()
{
    vector<string> v;
    fast_io();
    int n, res = 1;
    cin >> n;
    while (n--)
    {
        string str;
        cin >> str;
        reverse(str.begin(), str.end());
        v.push_back(str);
    }
    while (true)
    {
        set<string> s;
        for (int i = 0; i < v.size(); i++)
        {
            s.insert(v[i].substr(0, res));
        }
        if (s.size() == v.size())
            break;
        else
            res++;
    }
    cout << res;
}
入力した文字列をベクトルに反転します.
各文字列を0-resに切り取りsetに入れます.
3つ自体がすでに同じ要素を持っている場合は、挿入しない特性を利用します.
最後に入力した学生数=set.size()が同じであれば結果値が表示され、そうでなければ重複値が表示されるためresが向上する.