ホームページ  >  記事  >  バックエンド開発  >  C++ プログラム: あるボックスを別のボックスの中に配置した後に表示されるボックスの数を求める

C++ プログラム: あるボックスを別のボックスの中に配置した後に表示されるボックスの数を求める

王林
王林転載
2023-09-11 23:37:021247ブラウズ

C++ プログラム: あるボックスを別のボックスの中に配置した後に表示されるボックスの数を求める

問題を解決するために、ボックスの寸法を含む配列が与えられます。ここで、大きな箱のサイズが小さな箱のサイズの少なくとも 2 倍であれば、小さな箱を大きな箱の中に入れることができるという条件ができました。ここで、たとえば、表示されているボックスがいくつあるかを判断する必要があります。

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

解決策を見つける方法

この問題では、配列を並べ替えるというアプローチをとります。次に、要素をキューにプッシュします。作業を進めるにつれて、現在の要素がキューの先頭にある要素のサイズの 2 倍以上であるかどうかを確認します。 true の場合、前の要素をポップします。最後に、現在の要素をキューにプッシュします。答えは、最終的なキューのサイズになります。

#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 などの他の言語で書くことができます。このチュートリアルがお役に立てば幸いです。

以上がC++ プログラム: あるボックスを別のボックスの中に配置した後に表示されるボックスの数を求めるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。