题解 | 数据分类处理

数据分类处理

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

#include <iostream>
#include <vector>
#include <string>
#include <map>

int main() {
    // 输入数据集
    int data_size;
    std::cin >> data_size;
    std::vector<std::string> datas(data_size);
    for(int i = 0; i < data_size; ++i) std::cin >> datas[i];

    // 输入规则集
    int rule_size;
    std::cin >> rule_size;
    // key对应规则;value对应符合条件的数据在数据集合中的下标
    std::map<int, std::vector<int>> rules;
    for(int i = 0; i < rule_size; ++i){
        int rule;
        std::cin >> rule;
        rules[rule] = std::vector<int>();
    }

    int total_size = 0;
    // 遍历规则集和数据集
    for(auto& rule : rules){
        const auto& key = rule.first;
        for(int i = 0; i < data_size; ++i){
            if(datas[i].find(std::to_string(key)) == std::string::npos) continue;
            rules[key].emplace_back(i);
        }
        if(!rules[key].empty()) total_size += 2 + 2 * rules[key].size();
    }

    // 输出结果
    std::cout << total_size << " ";
    for(const auto& result : rules){
        if(result.second.empty()) continue;
        std::cout << result.first << " " << result.second.size() << " ";
        for(const auto& result_value : result.second){
            std::cout << result_value << " " << datas[result_value] << " "; 
        }
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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