题解 | #数据分类处理#

数据分类处理

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

对读入的R进行排序和去重,然后遍历每个R中的元素,使用find函数判断相应的I中的元素是否满足条件,使用合适的数据结构按顺序保存数据,最后按照格式输出即可。

#include <iostream>
#include <vector>
#include <algorithm>
#include <map>
using namespace std;

int main() {
    int I, R;
    string num;
    vector<string> nums;
    vector<int> nums_r;
    int number;
    cin >> I;
    for (int i = 0; i < I; i++) {
        cin >> num;
        nums.push_back(num);
    }
    cin >> R;
    for (int i = 0; i < R; i++) {
        cin >> number;
        nums_r.push_back(number);
    }
    sort(nums_r.begin(), nums_r.end());
    auto last = unique(nums_r.begin(), nums_r.end());
    nums_r.erase(last, nums_r.end());
    vector<vector<string>> data;
    vector<string> sequence;
    for (vector<int>::iterator it = nums_r.begin(); it != nums_r.end(); it++) {
        vector<string> temp;
        for (int i = 0; i < nums.size(); i++) {
            if (nums.at(i).find(to_string(*it)) != string::npos) {
                temp.push_back(to_string(i));
                temp.push_back(nums.at(i));
            }
        }
        if (temp.size() != 0) {
            sequence.push_back(to_string(*it));
            data.push_back({temp});
        }
    }
    int n = data.size() * 2;
    for (vector<string> element : data) {
        n += element.size();
    }
    cout << n << ' ';
    for (int i = 0; i < sequence.size(); i++) {
        cout << sequence.at(i) << ' ' << data.at(i).size() / 2 << ' ';
        for (string num : data.at(i)) {
            cout << num << ' ';
        }
    }
    return 0;
}
// 64 位输出请用 printf("%lld")

较难(算法题解) 文章被收录于专栏

较难难度题目

全部评论

相关推荐

09-17 10:53
四川大学 C++
牛客91242815...:会写标书没有任何卵用,鉴定为横向垃圾导师的受害者
点赞 评论 收藏
分享
10-14 21:00
门头沟学院 Java
吃花椒的狸猫:这个人说的倒是实话,特别是小公司,一个实习生哪里来的那么多要求
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务