华为机试二星题--书籍叠放c++
时间: 2023-08-10 22:01:26 浏览: 132
题目要求:有n本书和h个书堆。一开始所有的书都叠放在不同的书堆中,每个书堆上可以叠放无数本书。将第i本书依次放入书堆中,第i本书的放置位置遵循以下规则:
1. 如果第i-1本书在第j个书堆中,那么第i本书会放在第j个书堆中。
2. 如果第i-1本书在第j个书堆中,那么第i本书会放在第j+1个书堆中。
在放置了n本书以后,问总共需要多少个书堆。
解题思路:根据题意,需要统计当前的书堆数。设置一个变量cur表示当前的书堆数,初始值为1。遍历每一本书,如果当前的书不等于前一本书,则书堆数+1.最后返回书堆数cur。
具体代码如下:
int bookStacking(vector<int>& books) {
int cur = 1;
for (int i = 1; i < books.size(); i++) {
if (books[i] != books[i-1]) {
cur++;
}
}
return cur;
}
相关问题
华为od机试真题-跳房子i
跳房子是一种常见的儿童游戏,目的是通过跳跃的方式,从一个方格跳到另一个方格,并将跳过的方格标记或移除。华为OD机试中的题目“跳房子i”要求我们在给定的一维数组中模拟该游戏并输出最终的数组情况。
首先,我会创建一个相同长度的布尔数组,用于记录每个方格是否被跳过。因为题目中指定第一个方格为起始位置,所以令第一个方格为true。
接下来,我会使用一个循环来遍历数组,从第二个方格开始,判断当前方格的前一个方格是否被跳过。如果被跳过,则将当前方格标记为true,否则标记为false。重复这个过程直到遍历完整个数组。
最后,我会再次遍历布尔数组,统计被标记为true的方格数目,即为跳过的方格数目。将这个结果输出。
通过这个简单的模拟过程,我们可以在华为OD机试中顺利解答跳房子i的问题。跳房子i题目考查了对数组遍历和判断的能力,同时也考察了问题分析和解决的思维能力。
华为od机试-2023真题-考点分类
华为OD机试-2023真题主要考察了以下几个方面的知识点:
1. 数据结构与算法:题目涉及了常见的数据结构和算法,如数组、链表、树、图、排序、搜索等。要求考生熟悉这些数据结构的基本操作和常用算法的实现方法。
2. 编程语言:题目要求使用C++或Java语言完成编程任务,要求考生熟悉相应语言的语法和常用的库函数使用方法。
3. 网络通信:题目涉及了网络通信相关的知识点,如TCP/IP协议、HTTP协议、socket编程等。要求考生了解网络通信的基本概念和实现方式。
4. 操作系统:题目要求考生熟悉操作系统相关的知识,如进程管理、内存管理、文件系统等。要求考生了解操作系统的基本功能和实现原理。
5. 数据库:题目涉及了数据库相关的知识点,如SQL语句的编写、数据库的设计和优化等。要求考生具备数据库的基本操作和设计能力。
6. 设计模式:题目要求考生能够根据给定的需求设计相应的对象和类,并且符合设计模式的原则。要求考生熟悉常见的设计模式和其应用场景。
7. 系统设计与架构:题目要求考生从整体上设计和实现一个系统,并考虑系统的性能、可扩展性等因素。要求考生了解系统设计的基本原则和方法。
以上是华为OD机试-2023真题的一些考点分类。考生在复习备考时,可以根据这些考点有针对性地进行学习和练习,提升自己的应试能力。
阅读全文