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

c++server side programmingprogramming

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

输入:arr[] = { 1, 3, 4, 5 }
输出:3
将一个大小为 1 的盒子放入大小为 3 的盒子中。

输入:arr[] = { 4, 2, 1, 8 }
输出:1

寻找解决方案的方法

在这个问题中,我们的方法是现在对数组进行排序。我们现在将元素推送到队列中。随着进程的推进,我们将查看当前元素是否大于或等于队列前端元素的两倍。如果是,我们现在弹出前端元素。最后,我们将当前元素推入队列。我们的答案将是队列末尾的大小。

示例

#include <bits/stdc++.h>
using namespace std;
int main(){
    int arr[] = { 1, 2, 3, 4, 5, 6 }; // 给定包含我们盒子大小的数组
    int n = sizeof(arr) / sizeof(arr[0]); // 我们数组的大小
   queue<int> q;
    sort(arr, arr + n); // 对数组进行排序
    q.push(arr[0]); // 将最小元素推到最前面
    for (int i = 1; i < n; i++) { // 遍历数组
          int curr = q.front(); // 当前元素
        if (arr[i] >= 2 * curr) // 如果当前框的大小大于两倍
                                 // 前面的盒子所以我们弹出前面的
            q.pop();

        q.push(arr[i]); // 将当前元素推送到队列中
    }
    cout << q.size() << "\n"; // 我们的答案
    return 0;
}

输出

3

结论

在本教程中,我们解决了一个问题,即在将一个盒子放入另一个盒子后找出可见盒子的数量。我们还学习了这个问题的 C++ 程序以及解决这个问题的完整方法(普通方法)。我们可以用其他语言(如 C、java、python 和其他语言)编写相同的程序。我们希望您觉得本教程有用。


相关文章