求解!!
查看原帖
求解!!
1058352
Sans0406楼主2023/8/8 12:26

这怎么做啊?? 大佬教教我

  #include <iostream>
#include <vector>
#include <unordered_set>
using namespace std;

unordered_set<string> get_substrings(string s) {
    unordered_set<string> substrings;
    for (int i = 0; i < s.length(); i++) {
        for (int j = i + 1; j <= s.length(); j++) {
            substrings.insert(s.substr(i, j - i));
        }
    }
    return substrings;
}

vector<int> get_uniqueness_factor(vector<string> names) {
    vector<int> uniqueness_factors;
    for (int i = 0; i < names.size(); i++) {
        int uniqueness_count = 0;
        unordered_set<string> substrings = get_substrings(names[i]);
        for (int j = 0; j < names.size(); j++) {
            if (i == j) {
                continue;
            }
            unordered_set<string> other_substrings = get_substrings(names[j]);
            bool is_unique = true;
            for (string substring : substrings) {
                if (other_substrings.find(substring) != other_substrings.end()) {
                    is_unique = false;
                    break;
                }
            }
            if (is_unique) {
                uniqueness_count += substrings.size();
            }
        }
        uniqueness_factors.push_back(uniqueness_count);
    }
    return uniqueness_factors;
}

int main() {
    int N;
    cin >> N;
    vector<string> names(N);
    for (int i = 0; i < N; i++) {
        cin >> names[i];
    }
    vector<int> uniqueness_factors = get_uniqueness_factor(names);
    for (int factor : uniqueness_factors) {
        cout << factor << endl;
    }
    return 0;
}

看代码哪里错了

2023/8/8 12:26
加载中...