栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++回溯法解决背包问题源码演示

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++回溯法解决背包问题源码演示

工作之余,把代码过程常用的内容做个备份,下面代码段是关于C++回溯法解决背包问题演示的代码,应该对各位有较大好处。

#include
#include
using namespace std;

class Knapsack{
public:
p = pp;
w = ww;
n = nn;
c = cc;
cw = 0;
cp = 0;
bestp = 0;
x = new int[n];
cx = new int[n];
}

void knapsack(){
   backtrack(0);
 }

	if(i > n){
	    if(cp > bestp){
	       bestp = cp;
	       for(int i = 0; i < n; i++)
		 x[i] = cx[i];
	    }
	    return;
	}

	  cw += w[i];
	  cp += p[i];
	  cx[i] = 1;
	  backtrack(i+1);
	  cw -= w[i];
	  cp -= p[i];
	}
	cx[i] = 0;
}

void printResult(){
   cout << "可以装入的最大价值为:" << bestp << endl;
   cout << "装入的物品依次为:";
   for(int i = 0; i < n; i++){
     if(x[i] == 1)
		 cout << i+1 << " ";
   }
   cout << endl;
}

private:
int n;
double c;
};

int main(){
  double p[4] = {9,10,7,4},w[4] = {3,5,2,1};
Knapsack ks = Knapsack(p,w,4,7);
ks.knapsack();
  ks.printResult();
  return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/312314.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号