分岐限定法を使用した C/C++ での 0/1 ナップザック問題の実装
アイデアは、貪欲な方法が分数ナップザック問題に対する最良の解決策を提供するという事実を認識することです。
特定のノードがより良いソリューションを提供できるかどうかを確認するために、貪欲なアプローチを実装して最適なソリューションを (ノードごとに) 計算します。貪欲な方法自体がこれまでの最良の解よりも多くの解を計算する場合、ノードを通じてより良い解を得ることができません。
完全なアルゴリズムは次のとおりです。 -
すべてのアイテムを単位重量比の値の降順に並べ替えて、貪欲なアルゴリズムを使用して上限を計算できるようにします。方法。
最大利益を初期化します (例: maxProfit = 0
空のキュー Q を作成します)。
意思決定仮想ノードはツリーを作成し、それを Q に挿入またはキューに入れます。仮想ノードの利益と重みは 0 です。
-
Q が空でない場合、または空の場合は、次の操作を実行します。
Q でプロジェクトを作成しました。抽出項目をuとする。
次のレベルのノードの利益を計算します。利益が maxProfit よりも高い場合は、maxProfit を変更します。
次のレベルのノードの制限を計算します。バウンドが maxProfit より大きい場合、次のレベルのノードを Q に追加します。
次のレベルのノードが考慮されない、またはソリューションの一部として考慮されず、次のレベルのレベルでキューにノードを追加しますが、重みと利益は処理されていません。または、次のレベルのノードを検討してください。
以下の図 -
入力// First thing in every pair is treated as weight of item // and second thing is treated as value of item Item arr1[] = {{2, 40}, {3.14, 50}, {1.98, 100}, {5, 95}, {3, 30}}; Knapsack Capacity W1 = 10
出力
The maximum possible profit = 235
以上が分岐限定法を使用した C/C++ での 0/1 ナップザック問題の実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









関数 strcmp() は組み込みライブラリ関数であり、「string.h」ヘッダー ファイルで宣言されています。この関数は文字列の引数を比較するために使用されます。文字列を辞書順に比較します。つまり、両方の文字列を 1 文字ずつ比較します。comp を開始します。

fseek() は、ファイル ポインタを特定の場所に移動するために C 言語で使用されます。オフセットとストリームはポインターのターゲットであり、関数の引数で指定されます。成功した場合はゼロを返します。失敗した場合は、ゼロ以外の値が返されます。以下は、C 言語の fseek() の構文です。 intfseek(FILE*stream,longintoffset,intwhence) fseek() で使用されるパラメーターは次のとおりです。 stream- これは、ストリームを識別するために使用されるポインターです。 offset -これは位置からのバイト数です。 wherece - ここにオフセットが追加されます。 wherece は次の定数で与えられます

このアイデアは、貪欲な方法が分数ナップザック問題に対する最良の解決策を提供するという事実を認識することです。特定のノードがより良いソリューションを提供できるかどうかを確認するために、貪欲なアプローチを実装して最適なソリューションを (ノードごとに) 計算します。貪欲な方法自体がこれまでの最良の解よりも多くの解を計算する場合、ノードを通じてより良い解を得ることができません。完全なアルゴリズムは次のとおりです。貪欲法を使用して上限を計算できるように、すべての項目が単位重量比あたりの値の降順に並べ替えられます。最大利益を初期化します。たとえば、空のキュー Q を作成するには maxProfit=0 とします。デシジョン仮想ノードはツリーを作成し、それを Q に挿入またはキューに入れます。仮想ノードの利益と重みは 0 です。 Qが空でない場合、または空の場合は次の操作を実行します。作成する

唯一の安全な方法は、オーバーフローが発生する前にチェックすることです。ただし、整数のオーバーフローをチェックする非公式な方法がいくつかあります。したがって、符号なし整数を加算するときにオーバーフローを検出することが目的の場合は、結果が実際に加算された 2 つの値よりも小さいかどうかを確認できます。たとえば、サンプル コード unsignedintx,y;unsignedintvalue=x+y;booloverflow=value<x;//代わりに、"value<y" も機能するはずです。これは、x と y が両方とも符号なし整数である場合に、これらを追加すると、およびオーバーフローの場合、必要なため、それらの値をどの値よりも大きくすることはできません。

if..else 句の代わりに三項演算子が実装されていることがわかります。 ?:で表されます。 「?」 「シンボル」はif部分に相当し、「:」はelse部分に相当します。次の 3 つのプログラムは、三項演算子の場合の興味深い観察結果を説明しています。次のプログラムはエラーなしでコンパイルされます。三項式の戻り値の型は float (exp2 と同様) であることが想定されており、exp3 (つまり、リテラルの zero-int 型) は暗黙的に float に変換可能です。 #include<iostream>usingnamespacestd;intmain(){ inttest1=0;&

貪欲アルゴリズムは、特定の問題に対する最適な解決策を見つけるために使用されるアルゴリズムです。貪欲アルゴリズムは、各部分の局所的な最適解 (問題の一部に対する最適解) を見つけることによって機能し、全体的な最適解が見つかることを示します。この問題では、貪欲アルゴリズム アルゴリズムを使用して、所定の合計を構成できるコイン/紙幣の最小数を見つけます。このために、すべての有効な硬貨または紙幣、つまり額面 {1,2,5,10,20,50,100,200,500,2000} を考慮します。合計を補うために必要なコイン/紙幣の数を返す必要があります。コンテキストをよりよく理解するために、いくつかの例を示します - 例 1 - 入力: 1231 出力: 7 説明 - 500 ルピー紙幣が 2 枚必要です

列挙型は、C 言語のユーザー定義のデータ型です。これは整数定数に名前を付けるために使用され、プログラムを読みやすく、保守しやすくします。キーワード「enum」は列挙型を宣言するために使用されます。 C 言語の列挙型の構文は次のとおりです: enumenum_name{const1,const2,....};enum キーワードは変数 sofenum 型の定義にも使用されます。変数 sofenum 型を定義するには次の 2 つの方法があります。enumweek{sunday,monday,tuesday,

4 次元配列は、3 次元配列で構成される配列です。アルゴリズム Begin.Declarethevariables.Declarethearrayelements.Takethenoofelementsasinput.Taketheelementsasinput.Printtheelementsstoredinarray.End. これは 4D 配列の例です。 #include<iostream>usingnamespacestd;intmain(){ inta[2][2][3]
