ホームページ  >  記事  >  バックエンド開発  >  2* 最小値が最大値より大きくなるように、両側から最小の要素を削除する C++ プログラム

2* 最小値が最大値より大きくなるように、両側から最小の要素を削除する C++ プログラム

PHPz
PHPz転載
2023-08-28 08:09:141184ブラウズ

2* 最小値が最大値より大きくなるように、両側から最小の要素を削除する C++ プログラム

この問題には、2*min が max より大きくなるように、整数のリストの両側から要素を削除することが含まれます。

リーリー

ブルートフォース手法を使用することもできます。考えられるすべての条件を試して、条件 2*min > max を満たす最長の部分配列を見つけることができます。動的プログラミング手法を使用して、考えられる過剰で不要な部分配列の組み合わせをすべて試すこともできます。

例 (ベクトル ADT を使用)

「[250, 10, 11, 12, 19, 200]」のような配列があるとします。最良の解決策を得るには、要素 [250, 200] を削除して配列 [10, 11, 12, 19] (最小値が 10、最大値が 19) を形成する必要があります。したがって、2*10 > 19 となります。配列から出力しているため、出力は 2 です。

以下は、最小値の 2 倍が最大値よりも大きくなるように、配列から最小数の要素を削除する方法を説明する C プログラムです -

リーリー ###出力### リーリー

例 (ベクトル ADT を使用しない)

次の C プログラムは、Vector ADT を使用せずに、最小値の 2 倍が最大値よりも大きくなるように、配列から最小数の要素を削除する方法を記述しています。 -

リーリー ###出力### リーリー ###結論は###

ここでは、総当たり法を使用して最長の部分配列を見つけます。他に考えられる解決策としては、両側から要素を繰り返しポップすることや他の方法で、可能なすべてのサブ配列をチェックすることが考えられます。それにもかかわらず、その実装には労力がかかり、最適化も不十分です。すべてのサブ配列をすでに反復しているため、ここでの時間計算量は O(n^2) です。

以上が2* 最小値が最大値より大きくなるように、両側から最小の要素を削除する C++ プログラムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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