目录:

  • 题目描述
  • 输入描述:
  • 输出描述:
  • 示例:
  • 题意理解
  • C++代码:
  • 参考文章:

题目描述

信息社会,有海量的数据需要分析处理,比如公安局分析身份证号码、 QQ 用户、手机号码、银行帐号等信息及活动记录。

采集输入大数据和分类规则,通过大数据分类处理程序,将大数据分类输出。

输入描述:

一组输入整数序列I和一组规则整数序列R,I和R序列的第一个整数为序列的个数(个数不包含第一个整数);整数范围为0~0xFFFFFFFF,序列个数不限

输出描述:

从R依次中取出R<i> ,对I进行处理,找到满足条件的I<j>: I<j>整数对应的数字需要连续包含R<i>对应的数字。比如R<i>为23,I<j>为231,那么I<j>包含了R<i>,条件满足 。

按R<i>从小到大的顺序:
(1)先输出R<i>;
(2)再输出满足条件的I<j>的个数;
(3)然后输出满足条件的I<j>在I序列中的位置索引( 从0开始\color{red}{从0开始}从0开始 );
(4)最后再输出I<j>。

附加条件:
(1)R<i>需要从小到大\color{red}{从小到大}从小到大排序。相同的R<i>只需要输出索引小的以及满足条件的I<j>,索引大的需要过滤掉
(2)如果没有满足条件的I<j>,对应的R<i>不用输出
(3)最后需要在输出序列的第一个整数位置记录后续整数序列的个数(不包含“个数”本身)

序列I:
15,123,456,786,453,46,7,5,3,665,453456,745,456,786,453,123(第一个15表明后续有15个整数)
序列R:
5,6,3,6,3,0(第一个5表明后续有5个整数)

输出:
30\color{red}{30}30, 3\color{red}{3}3,6,0,123,3,453,7,3,9,453456,13,453,14,123,6\color{red}{6}6,7,1,456,2,786,4,46,8,665,9,453456,11,456,12,786
说明:
30−−−后续有30个整数\color{red}{30 --- 后续有30个整数}30−−−后续有30个整数
3−−−从小到大排序,第一个R<i>为0,但没有满足条件的I<j>,不输出0,而下一个R<i>是3\color{red}{3 --- 从小到大排序,第一个R<i>为0,但没有满足条件的I<j>,不输出0,而下一个R<i>是3}3−−−从小到大排序,第一个R<i>为0,但没有满足条件的I<j>,不输出0,而下一个R<i>是3
6 ---- 存在6个包含3的I
0 ---- 123所在的原序号为0
123 ---- 123包含3,满足条件

示例:

输入

15 123 456 786 453 46 7 5 3 665 453456 745 456 786 453 123
5 6 3 6 3 0

输出

30 3 6 0 123 3 453 7 3 9 453456 13 453 14 123 6 7 1 456 2 786 4 46 8 665 9 453456 11 456 12 786

题意理解

  1. 有两个整数序列输入,一个序列当成规则序列,另一个是输入序列。
  2. 将规则序列排序(从小到大),并去重。
  3. 对于规则序列的每个整数,在输入序列查找包含这个整数的输入数,打印这个输入数的序号和整数值。
  4. 统计每个规则的个数以及总个数。

C++代码:

#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;// 判断是否是子串
bool isSubStr(string sSub, int Str)
{string sStr = to_string(Str);return sStr.find(sSub) != string::npos;
}// 判断序列I中的元素i是否包含的子串sub,并返回下标和值
vector<int> getSubstr(int sub, vector<int> I)
{vector<int> result;int is = I.size();string sSub = to_string(sub);for (int pos = 0; pos < is; pos++){if(isSubStr(sSub, I[pos])){result.push_back(pos);result.push_back(I[pos]);}}return result;
}// 获取序列I中所有满足规则序列R的元素下标、数值,以及个数
vector<int> dataClassify(vector<int> I, vector<int> R)
{vector<int> Result;// 遍历R,对R中的每一个规则整数r,遍历序列I,获取满足的数据for (vector<int>::iterator ri = R.begin(); ri != R.end(); ri++){int r = *ri;vector<int> sv = getSubstr(r, I);int ss = sv.size();if (ss > 0){Result.push_back(r);Result.push_back(ss/2);Result.insert(Result.end(), sv.begin(), sv.end());}}return Result;
}int main()
{// 循环处理int in,rn;while(cin>>in){// 读取输入数据序列I和R;vector<int> I, R;int temp;for (size_t i = 0; i < in; i++){cin>>temp;I.push_back(temp);}cin>>rn;for (size_t i = 0; i < rn; i++){cin>>temp;R.push_back(temp);}// 排序和去重序列R;sort(R.begin(), R.end());R.erase(unique(R.begin(), R.end()), R.end());// 对数据进行分类vector<int> Result = dataClassify(I, R);// 输出结果cout<< Result.size() << " ";for (vector<int>::iterator Ri = Result.begin(); Ri != Result.end(); Ri++){cout << *Ri << " ";}cout << endl;}return 0;
}

参考文章:

  • 数据分类处理(牛客网华为机试): https://blog.csdn.net/YBY1994/article/details/84403103
  • 数据分类处理__牛客网: https://www.nowcoder.com/questionTerminal/9a763ed59c7243bd8ab706b2da52b7fd

C++实现_数据分类处理(牛客网华为机试题)相关推荐

  1. 华为机试python编程题_牛客网华为机试题之Python解法

    牛客网华为机试题之Python解法 第1题 字符串最后一个单词的长度 a = input().split(" ") print(len(a[-1])) 第2题 计算字符个数 a = ...

  2. 牛客网华为机试题(JavaScript)

    最近在牛客网刷华为机试题,遇到了很多坑,记录: 每一道题目都经过自己实践验证 华为机试题 牛客网在javascript V8引擎下处理输入输出如下: 利用了readline()接收输入的每一行,多行处 ...

  3. 牛客网 华为机试题 数据重复的筛选问题记录

    题目描述 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数. 保证输入的整数最后一位不是0. 输入描述: 输入一个int型整数 输出描述: 按照从右向左的阅读顺序,返回一个 ...

  4. 牛客网华为机试题 字符串问题 记录

    一.题目描述 写出一个程序,接受一个由字母.数字和空格组成的字符串,和一个字母,然后输出输入字符串中该字母的出现次数.不区分大小写. 输入描述: 第一行输入一个由字母和数字以及空格组成的字符串,第二行 ...

  5. 【牛客网-华为机试题目录】持续更新中

    文章目录 博主精品专栏导航 华为机试题:HJ80 整型数组合并(python) 华为机试题:HJ76 尼科彻斯定理(python) 华为机试题:HJ73 计算日期到天数转换(python) 华为机试题 ...

  6. (牛客网)华为机试(二)

    (牛客网)华为机试题集解答 在解题前先分享一波oj刷题的固定格式代码,方便输入时使用 import java.util.*; import java.io.*; public class Main{ ...

  7. 「解析」牛客网-华为机考企业真题 41-60

    又是一年春招时,有幸收到华为自动驾驶算法岗,之前刷题不多,在此汇总下牛客网的真题,主要采用Python编写,个人觉得语言只是实现工具而已,并不是很关键,Python简洁易懂,更加适合算法工程师快速验证 ...

  8. 「解析」牛客网-华为机考企业真题 81-108

    又是一年春招时,有幸收到华为自动驾驶算法岗,之前刷题不多,在此汇总下牛客网的真题,主要采用Python编写,个人觉得语言只是实现工具而已,并不是很关键,Python简洁易懂,更加适合算法工程师快速验证 ...

  9. 「解析」牛客网-华为机考企业真题 21-40

    又是一年春招时,有幸收到华为自动驾驶算法岗,之前刷题不多,在此汇总下牛客网的真题,主要采用Python编写,个人觉得语言只是实现工具而已,并不是很关键,Python简洁易懂,更加适合算法工程师快速验证 ...

最新文章

  1. 关于chrome等浏览器不支持showModalDialog的解决方案
  2. Unsupervised Deep Image Stitching:首个无监督图像拼接框架(TIP2021)
  3. 别致的上传思路导致getshell的案例
  4. P2564 [SCOI2009]生日礼物
  5. c++ n次方函数_高中数学必修一二次函数与幂函数试题及答案
  6. 改变TFS本地映射路径.
  7. C#.NET自定义报表数据打印
  8. 项目实施方案指导性文件
  9. 音视频剪辑 DIY:用 Python 快速入门音视频剪辑
  10. CDN 网站部署全站加速服务
  11. 通过PHP使用Google Translate API
  12. latex中极限号下边怎么打_latex 极限下标
  13. 【ArcGIS风暴】CASS建立标准分幅图框并在ArcGIS中DOM批量分幅案例教程
  14. RIS前言技术讲座系列
  15. Win11WSA无法启动的解决办法
  16. ORA-27072、ORA-27072错误解析
  17. DelayQueue使用示例之KTV包厢记时
  18. SQL Server新增Contained Database功能
  19. 2022-2028年中国小麦组织蛋白行业市场发展潜力及投资前景分析报告
  20. 区间划定最小值题解--单调队列

热门文章

  1. 视频网站如何选择视频服务器呢?
  2. 压铸模拟-梁形铝合金压铸件变形研究
  3. 计算机小白对计算机的认识
  4. 如何利用CNN实现图像识别的任务?
  5. 计算机网络诈骗犯罪的发案规律,当前网络诈骗犯罪侦查工作中存在的问题和对策演示教学(6页)-原创力文档...
  6. 翻页时钟java代码_Android编程基于自定义控件实现时钟功能的方法
  7. 取消Word开启后自动显示所有标记
  8. win10系统如何配置web服务器,Win10 IIS Web服务器安装与配置
  9. node.js - Nodejs 分布式事务_个人文章 - SegmentFault 思否
  10. java 反射动态修改数据类型_[Java-基础]反射_Class对象_动态操作