【华为OD:C++机试】Day-1

news2024/11/24 18:47:48

目录

🌷1. 统计监控、需要打开多少监控器:

🌷2. 阿里巴巴找黄金宝箱:

🌷3. 事件推送:

🌷4. 分苹果:

🌷5. 乱序整数序列两数之和绝对值最小:

🌷6.卡片组成的最大数字:

🌷7.找最小数:

🌷8.身高排序:

🌷9.出错的或电路:

🌷10.磁盘容量:



🌷1. 统计监控、需要打开多少监控器:

题目描述:

思路:

 将地图先进行存储,遍历地图,如果是1直接++,如果是0,判断四周如果是1直接++,然后break,如果在此不break则会出现多算的情况;

 code: 

// 统计监控的个数
#include <iostream>
using namespace std;

int m, n;
int grid[20][20];

int dx[4] = { -1, 0, 1, 0 };
int dy[4] = { 0, 1, 0, -1 };

int main()
{
	// 用于存储地图
	cin >> m >> n;
	for (int i = 0; i < m; i++)
	{
		for (int j = 0; j < n; j++)
		{
			cin >> grid[i][j];
		}
	}

	int ans = 0;
	for (int row = 0; row < m; row++)
	{
		for (int col = 0; col < n; col++)
		{
			if (grid[row][col] == 1)
			{
				ans++;
			}
			else
			{
				for (int i = 0; i < 4; i++)
				{
					int x = row + dx[i];
					int y = col + dy[i];

					if (x >= 0 && x < m && y >= 0 && y < n && grid[x][y] == 1)
					{
						ans++;
						break;
					}
				}
			}
		}
	}

	cout << ans;
	return 0;
}

🌷2. 阿里巴巴找黄金宝箱:

题目描述:

code:

// 阿里巴巴寻宝箱
#include <iostream>
#include <string>
#include <vector>

using namespace std;

int main()
{
	string str;
	cin >> str;

	int pos = 0;
	vector<int> v;
	while ((pos = str.find(',')) != str.npos)
	{
		v.push_back(stoi(str.substr(0, pos)));
		str.erase(0, pos + 1);
	}
	v.push_back(stoi(str));

	int leftsum = 0, rightsum = 0;
	for (auto e : v)
		rightsum += e;

	for (int i = 0; i < v.size(); i++)
	{
		rightsum -= v[i];
		if (leftsum == rightsum)
		{
			cout << i;
			return 0;
		}
		leftsum += v[i];
	}
	cout << -1;
	return 0;
}

🌷3. 事件推送:

题目描述:

code:

// 事件推送
#include <iostream>
#include <vector>
using namespace std;

void sloveMathod(int R, const vector<int>& a, const vector<int>& b)
{
	int index = 0;
	vector<vector<int>> list;

	for (int i = 0; i < a.size(); i++)
	{
		vector<int> input(2);
		while (index < b.size())
		{
			if (a[i] <= b[index] && b[index] - a[i] <= R)
			{
				input[0] = a[i];
				input[1] = b[index];
				list.push_back(input);
				break;
			}
			index++;
		}
	}

	for (const auto& e : list)
		cout << e[0] << " " << e[1] << endl;
}

int main()
{
	int m, n, R;
	cin >> m >> n >> R;

	vector<int> a(m);
	vector<int> b(n);
	for (auto& e : a) cin >> e;
	for (auto& e : b) cin >> e;

	sloveMathod(R, a, b);
	return 0;
}

🌷4. 分苹果:

题目描述:

code:

// 分苹果
#include <iostream>
#include <string>
#include <vector>
#include <sstream>
#include <algorithm>

using namespace std;

void solveMethod(string line)
{
	// 将苹果的重量以整形的方式读入数组中
	stringstream ss(line);
	vector<int> nums;
	int n;
	while (ss >> n)
	{
		nums.push_back(n);
	}

	sort(nums.begin(), nums.end());

	int max_num = -1;

	for (int i = 1; i < nums.size() - 1; i++)
	{
		int left_bin = 0;
		int right_bin = 0;
		int left_sum = 0;
		int right_sum = 0;

		for (int j = 0; j < i; j++)
		{
			left_bin ^= nums[j];
			left_sum += nums[j];
		}

		for (int j = i; j < nums.size(); j++)
		{
			right_bin ^= nums[j];
			right_sum += nums[j];
		}

		if (left_bin == right_bin)
		{
			max_num = max(max(left_sum, max_num), right_sum);
		}
	}

	cout << max_num << endl;
}

int main()
{
	// 读入苹果的个数
	int N;
	cin >> N;
	cin.ignore();

	// 读入各苹果的重量
	string line;
	getline(cin, line);

	solveMethod(line);

	return 0;
}

🌷5. 乱序整数序列两数之和绝对值最小:

题目描述:

code:

// 乱序整数序列两数之和绝对值最小
#include <iostream>
#include <string>
#include <vector>
#include <sstream>
#include <algorithm>

using namespace std;

void solveMethod(string line)
{
	// 将数据全部存入之nums数组中
	stringstream ss(line);
	int n;
	vector<int> nums;
	while (ss >> n)
		nums.push_back(n);

	sort(nums.begin(), nums.end());
	nums.erase(unique(nums.begin(), nums.end()), nums.end());

	int min = INT_MAX;
	vector<int> ans(2);
	for (int i = 0; i < nums.size(); i++)
	{
		for (int j = 0; j < nums.size(); j++)
		{
			int a = nums[i];
			int b = nums[j];
			int sum = abs(a + b);

			if (sum < min && a != b)
			{
				min = sum;
				ans[0] = a;
				ans[1] = b;
			}
		}
	}

	if (!ans.empty())
	{
		cout << ans[0] << " " << ans[1] << " " << min << endl;
	}
}

int main()
{
	string line;
	getline(cin, line);

	solveMethod(line);

	return 0;
}

🌷6.卡片组成的最大数字:

题目描述:

code:

// 卡片组成的最大数字
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

bool cmp(const string& s1, const string& s2)
{
	return s1 + s2 > s2 + s1;
}

int main()
{
	string line;
	getline(cin, line);

	// 将输入的数存储在数组nums中
	vector<string> nums;
	string card;
	for (int i = 0; i < line.size(); i++)
	{
		if (line[i] == ',')
		{
			nums.push_back(card);
			card.clear();
		}
		else
		{
			card += line[i];
		}
	}
	nums.push_back(card);

	sort(nums.begin(), nums.end(), cmp);

	string ans;
	for (auto& s : nums)
		ans += s;

	cout << ans << endl;

	return 0;
}

🌷7.找最小数:

题目描述:

code:

// 找最小数
#include <iostream>
#include <string>
#include <stack>

using namespace std;

int main()
{
	string str;
	cin >> str;

	int n;
	cin >> n;

	stack<char> st;
	for (int i = 0; i < str.size(); i++)
	{
		while (n > 0 && !st.empty() && st.top() > str[i])
		{
			st.pop();
			n--;
		}
		st.push(str[i]);
	}

	string ans;
	while (!st.empty())
	{
		ans = st.top() + ans;
		st.pop();
	}

	cout << ans << endl;
	return 0;
}

🌷8.身高排序:

题目描述:

code:

// 身高排序
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
	int tall, n;
	cin >> tall >> n;

	vector<pair<int, int>> talls(n);
	for (int i = 0; i < n; i++)
	{
		int t;
		cin >> t;
		talls[i] = { abs(tall - t),t };
	}

	sort(talls.begin(), talls.end());

	for (auto e : talls)
	{
		cout << e.second << " ";
	}
	return 0;
}

🌷9.出错的或电路:

题目描述:

code:

// 出错的或电路
#include <iostream>
#include <string>

using namespace std;

int count_the_number(const string& str, const char& ch)
{
	int count = 0;
	for (auto& e : str)
	{
		if (e == ch)
			count++;
	}
	return count;
}

int count_num(int n, const string& str1, const string& str2)
{
	int count = 0;
	for (int i = 0; i < n; i++)
	{
		if (str1[i] == '1' && str2[i] == '0')
			count++;
	}
	return count;
}

int main()
{
	int n;
	string str1, str2;
	cin >> n >> str1 >> str2;

	int count1 = count_the_number(str1, '1');
	int count2 = count_the_number(str2, '0');
	int count = count_num(n, str1, str2);

	int ans = (count1 - count) * (count2 - count) + (n - count1) * count;
	cout << ans << endl;

	return 0;
}

🌷10.磁盘容量:

题目描述:

code:

// 磁盘容量
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int convert(const string& str)
{
	int sum = 0;
	string s = str;
	int pos = 0;
	while ((pos = s.find_first_of("MGT")) != string::npos)
	{
		string  substr = s.substr(0, pos);
		int size = stoi(substr);
		switch (s[pos])
		{
		case 'M':
			sum += size;
			break;
		case 'G':
			sum += size * 1024;
			break;
		case 'T':
			sum += size * 1024 * 1024;
			break;
		default:
			break;
		}
		s = s.substr(pos + 1);
		pos = 0;
	}
	return sum;
}

bool compare(const string& str1, const string& str2)
{
	return convert(str1) < convert(str2);
}

int main()
{
	int n;
	cin >> n;

	vector<string> capacity(n);
	for (auto& e : capacity)
		cin >> e;

	sort(capacity.begin(), capacity.end(), compare);

	for (const auto& e : capacity)
		cout << e << endl;

	return 0;
}

坚持打卡!😃

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1144838.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【影刀演示_发送邮件的格式化HTML留存】

发送邮件的格式化HTML留存 纯文本&#xff1a; 亲爱的小张: 端午节将至&#xff0c;公司为了感谢大家一年以来的辛勤工作和付出&#xff0c;特别为大家准备了京客隆超市福利卡&#xff0c;希望为大家带来些许便利和节日的喜悦。 以下是您的福利卡卡号和密码&#xff0c;请您…

2.预备知识

#pic_center R 1 R_1 R1​ R 2 R^2 R2 目录 知识框架No.1 数据预处理一、N维数组样例二、创建数组三、访问元素四、数据操作五、数据预处理六、D2L注意点 No.2 线性代数一、标量二、向量1、基本操作2、空间表示3、乘法 三、矩阵1、基本操作2、乘法3、空间表示4、乘法5、范数6、…

大部分人都不知道产品说明书有这些特点

企业网站产品说明书是企业展示产品信息的重要工具。它不仅提供了清晰的产品介绍、详细的技术规格、直观的使用指南和专业的设计与排版&#xff0c;还能帮助企业主、市场营销人员和潜在客户更好地了解产品。 | 1.清晰的产品介绍 产品特点、功能和优势 通过清晰的产品介绍&…

如何和安装Windows10系统教程(最新最详细)

目录 一.简介 二.安装步骤 软件&#xff1a;Windows 10版本&#xff1a;1909语言&#xff1a;简体中文大小&#xff1a;4.95G安装环境&#xff1a;Win10/Win8/Win7(64位&#xff09;硬件要求&#xff1a;CPU2.0GHz 内存4G(或更高&#xff09;下载通道①丨百度网盘&#xff1a…

Apollo安装全攻略

安装方式 概述快速安装安装基础软件安装 Ubuntu Linux安装 Docker Engine 安装 Apollo 环境管理工具获取 GPU 支持&#xff08;可选&#xff09;创建和进入 Apollo 环境容器 源码安装安装 Linux 系统&#xff08;可选&#xff09;安装 NVIDIA GPU 驱动安装 docker下载并编译 Ap…

toon boom harmony基础

以下都是tbh快捷键使用&#xff0c;或者一些常用功能介绍 1、在节点视图中&#xff0c;按回车可直接弹出节点库搜索框 2、中心线编辑器 只能编辑用笔刷画出来的线条&#xff0c;铅笔画出来的线条无法编辑。 3、镜头标记 1 右键箭头方向&#xff0c;可弹出下拉&#xff0c;&am…

铁轨(Rails, ACM/ICPC CERC 1997, UVa 514)rust解法

有一个火车站&#xff0c;铁轨铺设如图6-1所示。有n节车厢从A方向驶入车站&#xff0c;按进站顺序编号为1&#xff5e;n。你的任务是判断是否能让它们按照某种特定的顺序进入B方向的铁轨并驶出车站。例如&#xff0c;出栈顺序(5 4 1 2 3)是不可能的&#xff0c;但(5 4 3 2 1)是…

jmeter中beanshell的用法小结

本文主要介绍了jmeter中beanshell的用法小结&#xff0c;文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值&#xff0c;需要的朋友们下面随着小编来一起学习学习吧 一、什么是Bean Shell BeanShell是用Java写成的,一个小型的、免费的、…

CV计算机视觉每日开源代码Paper with code速览-2023.10.26

精华置顶 墙裂推荐&#xff01;小白如何1个月系统学习CV核心知识&#xff1a;链接 点击CV计算机视觉&#xff0c;关注更多CV干货 论文已打包&#xff0c;点击进入—>下载界面 点击加入—>CV计算机视觉交流群 1.【基础网络架构&#xff1a;Transformer】&#xff08;Ne…

处理大数据的基础架构,OLTP和OLAP的区别,数据库与Hadoop、Spark、Hive和Flink大数据技术

处理大数据的基础架构&#xff0c;OLTP和OLAP的区别&#xff0c;数据库与Hadoop、Spark、Hive和Flink大数据技术 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&am…

自学SLAM(5)《第三讲:李群和李代数》作业

前言 小编研究生的研究方向是视觉SLAM&#xff0c;目前在自学&#xff0c;本篇文章为初学高翔老师课的第三次作业。 文章目录 前言1.群的性质2.验证向量叉乘的李代数性质3.推导 SE(3) 的指数映射4.伴随5.轨迹的描绘6.* 轨迹的误差(附加题) 1.群的性质 课上我们讲解了什么是群。…

Linux--进程替换

1.什么是进程替换 在fork函数之后&#xff0c;父子进程各自执行代码的一部分&#xff0c;但是如果子进程想要执行一份全新的程序呢&#xff1f; 通过进程替换来完成&#xff0c;进程替换就是父子进程代码发生写时拷贝&#xff0c;子进程执行自己的功能。 程序替换就是通过特定的…

GPT出大错了!原来GPT不是万能的!这就是人类存在的意义!

目录 前言 测试方式 测试 问题一 问题二 问题三 问题四 结尾 前言 Chat GPT大家应该都听说过&#xff0c;但是它真的有想象中的那么强大吗&#xff1f;这篇文章带你深入了解。 这几个月GPT非常火爆&#xff0c;我也是经常用到。GPT是一个只能聊天机器人&#xff0c;能…

高等数学前置知识——二次函数

文章目录 二次函数1.1 二次函数1.2 二次函数的图像1.2.1 a > 0 时1.2.2 a < 0 时1.2.3 二次函数的平移1.2.4 普通二次型函数图像总结 1.3 其他形式的二次函数1.3.1 顶点式1.3.2 交点式 1.4 二次函数与直线的交点 二次函数 1.1 二次函数 二次函数的定义&#xff1a;y a…

贪心算法学习——最长单调递增子序列

目录 ​编辑 一&#xff0c;题目 二&#xff0c;题目接口 三&#xff0c;解题思路和代码 一&#xff0c;题目 给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组…

STM32F4X SDIO(二) SDIO协议

上一节简单介绍了SD卡的分类&#xff0c;本节将会介绍SD卡的通信协议&#xff0c;也就是SDIO协议。 STM32F4X SDIO&#xff08;二&#xff09;SDIO协议 SD 卡管脚和寄存器SD卡管脚分布SD卡通信协议SD卡寄存器SD卡内部结构 SDIO总线SDIO总线拓扑SDIO总线协议SDIO协议的基本结构…

手写RPC框架

文章目录 什么是RPC框架RPC框架中的关键点通信协议序列化协议动态代理和反射 目前已有的RPC框架手写RPC框架介绍项目框架项目执行流程项目启动 什么是RPC框架 RPC&#xff08;Remote Procedure Call&#xff0c;远程过程调用&#xff09;, 简单来说遵循RPC协议的就是RPC框架. …

编程实例:洗车店会员管理系统软件一卡多项目管理编程

编程实例&#xff1a;洗车店会员管理系统软件一卡多项目管理编程 编程系统化课程总目录及明细&#xff0c;点击进入了解详情。 https://blog.csdn.net/qq_29129627/article/details/134073098?spm1001.2014.3001.5502 1、会员可以直接用手机号&#xff0c;并可以绑定车牌号 2…

进阶JAVA篇- Java 综合基本语法实践(习题一)

路漫漫其修远兮&#xff0c;吾将上下而求索。—— 屈原 目录 第一道题&#xff1a;集合的灵活运用 第二道题&#xff1a;基础编程能力 第三道题&#xff1a; 手写 ArrayList 集合&#xff08;模拟实现 ArrayList 核心API&#xff09; 第四道题&#xff1a;二分查找的应用 第五道…

设置Oracle数据库默认为spfle启动,并且设置数据库SGA大小和PGA大小

本次目标&#xff1a;设置数据库默认为spfle启动&#xff0c;并且数据库SGA大小为2G&#xff0c;PGA大小为200M 1、环境检查 Oracle 9i以后启动的时候默认使用的初始化文件是spfile&#xff0c;但是为了万一还是进行查看一下 首先&#xff0c;确认您的数据库当前是否使用pfi…