ナップザックアルゴリズムに問題があります。正直言って私は何が間違っているのか分からない。私がプログラムを一度使うと、すべてうまくいきますが、私のプログラムをループ(テスト用)で使用するときには、大きな問題があります。例えばC++ナップザックの実装
:100
最大ナップザック容量::1000
最初の反復:
最大利益:2597
結果の重量:1000分の994
とその細かいファイルに
重量/ヴァルしかし、今度は別の反復です。
2回目の反復:
最大利益:2538
結果の重量:1000分の1004 < - と私の問題があり、その私の最大のキャップを超えます。
3番目、4番目はokey、5番目は間違っていた(1355/1000)などです。
void intoKnapsack(int k, float actual_profit, float actual_weight)
{
if (actual_weight + weight[k] <= cap)
{
tmp[k] = 1;
if (k <= number_items)
intoKnapsack(k + 1, actual_profit + value[k], actual_weight + weight[k]);
if (((actual_profit + value[k]) > final_profit) && (k == number_items))
{
final_profit = actual_profit + value[k];
final_weight = actual_weight + weight[k];
for (j = 0; j <= k; j++)
knap[j] = tmp[j];
}
}
else if ((bound(actual_profit, actual_weight, k) >= final_profit))
{
tmp[k] = 0;
if (k <= number_items)
intoKnapsack(k + 1, actual_profit, actual_weight);
if ((actual_profit > final_profit) && (k == number_items))
{
final_profit = actual_profit;
final_weight = actual_weight;
for (j = 0; j <= k; j++)
knap[j] = tmp[j];
}
}
}
誰かが私の問題を支援することができます:?可能な問題である
My機能
あなたはポリッシュコードを変換することができ、任意のチャンスはありますか?さもなければ私達はそれを読むことができない。 –
完了:Dは今より簡単になります – Slideroh
粗い翻訳:http://pastebin.com/xVZXFDp4(ありがとう、Google翻訳LOL)。 **編集**:ああ、私はGoogle翻訳を介して翻訳を完了する約30秒前に自分自身を翻訳しましたxD – SpencerD