C++程序:查找将盒子放入另一个盒子后可见的盒子数量


我们要解决一个问题,其中给定一个包含盒子大小的数组。现在给定一个条件,如果较大的盒子至少是较小盒子大小的两倍,则可以将较小的盒子放入较大的盒子中。现在我们必须确定有多少个可见的盒子,例如。

Input : arr[] = { 1, 3, 4, 5 }
Output : 3
Put a box of size 1 in the box of size 3.

Input : arr[] = { 4, 2, 1, 8 }
Output : 1

解决方法

在这个问题中,我们的方法是先对数组进行排序,然后向前移动。现在我们将元素推入队列。随着我们继续前进,我们将查看当前元素是否大于或等于队列前端元素的两倍。如果为真,我们现在弹出前端元素。最后,我们将当前元素推入队列。我们的答案将是我们队列的最终大小。

示例

#include <bits/stdc++.h>
using namespace std;
int main(){
    int arr[] = { 1, 2, 3, 4, 5, 6 }; // given array containing the size of our boxes
    int n = sizeof(arr) / sizeof(arr[0]); // size of our array
    queue<int> q;
    sort(arr, arr + n); // sorting our array
    q.push(arr[0]); // pushing the smallest element in the front
    for (int i = 1; i < n; i++) { // traversing the array
        int curr = q.front(); // current element
        if (arr[i] >= 2 * curr) // if the size of the current box is greater than twice
                               // of the box in front so we pop the front
            q.pop();

        q.push(arr[i]); // pushing the current element in the queue
    }
    cout << q.size() << "\n"; // our answer
    return 0;
}

输出

3

结论

在本教程中,我们解决了一个问题,以查找将一个盒子放入另一个盒子后可见的盒子数量。我们还学习了此问题的C++程序以及解决此问题的完整方法(常规方法)。我们可以在其他语言(如C、Java、Python等)中编写相同的程序。我们希望您觉得本教程有所帮助。

更新于: 2021年11月25日

275 次查看

开启你的职业生涯

通过完成课程获得认证

开始学习
广告