题解 | 数据分类处理
数据分类处理
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] << " ";
}
}
}
