题解 | #数据分类处理#暴力遍历

数据分类处理

https://www.nowcoder.com/practice/9a763ed59c7243bd8ab706b2da52b7fd

#include <iostream>
#include <vector>
#include <set>
#include <algorithm>
#include <bits/stdc++.h>

using namespace std;

// 获取I(i)中所有可能的数字
vector<int> getNum(int a) {
    string str = to_string(a);
    unordered_set<int> s1;
    int len = str.size();
    for(int i=0; i<len; ++i) {
        string cur;
        for(int j=i; j<len; ++j) {
            cur += str[j];
            if(!cur.empty()) s1.insert(stoi(cur));
        }
    }
    return vector<int>(s1.begin(), s1.end());
}

int main() {
    int ni, nr;
    cin >> ni;
    vector<int> I(ni,0);
    for(int i=0; i<ni; ++i) {
        cin >> I[i];
    }
    cin >> nr;
    vector<int> R(nr,0);
    for(int i=0; i<nr; ++i) {
        cin >> R[i];
    }
    sort(R.begin(), R.end());
    
    map<int, vector<int>> m1;
    for(int i=ni-1; i>=0; --i) {
        m1[i] = getNum(I[i]);
    }
    
    int count = 0;
    vector<vector<pair<int,int>>> final_ans;
    vector<int> new_R;
    for(int i=0; i<nr; ++i) {
        vector<pair<int,int>> ans;
        if(i>0 && R[i] == R[i-1]) continue;
        for(auto it=m1.begin(); it!=m1.end(); ++it) {
            vector<int> nums = it->second;
            for(int j=0; j<nums.size(); ++j) {
                if(nums[j] == R[i]) {
                    ans.push_back({I[it->first], it->first});
                    ++ count;
                    break;
                }
            }
        }
        if(!ans.empty()) {
            final_ans.push_back(ans);
            new_R.push_back(R[i]);
        }
    }
    
    // 输出
    count = count*2 + new_R.size()*2;
    cout << count;
    if(count != 0) cout << " ";
    for(int i=0; i<new_R.size(); ++i) {
        cout << new_R[i] << " ";
        cout << final_ans[i].size() << " ";
        int fsize = final_ans[i].size();
        for(int j=0; j<fsize; ++j) {
            cout << final_ans[i][j].second << " " << final_ans[i][j].first;
            if(i == new_R.size()-1 && j == fsize-1) continue;
            else cout << " ";
        }
    }
    return 0;
}

全部评论

相关推荐

你见过凌晨四点的牛客吗_BY_KobeBryant:明年再投都一样😂😂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务