华为机试二星题--书籍叠放c++
时间: 2023-08-10 16:01:26 浏览: 128
图书管理系统C++
题目要求:有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;
}
阅读全文