蛮力法背包问题

//============================================================================
// Name        : 背包问题.cpp
// Author      : 
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================

#include <iostream>
#define N 5
#define ST 10
using namespace std;

int main() {
		//给定n个重量,价值为不同的个物品和容量为c的背包,求这些物品中一个最有的价值的子集
		int a[N]={2,1,3,4,7};
		int b[N]={2,5,4,1,2};
		int sum1=0;//sum1表示最终的价值
	    for(int i=0;i<N;i++)//这是对每次的
	    {
	    	int STS=0;//石头的总个数
	    	int QS=0;//价值的总个数
	    	for(int j=0;j<N;j++)
	    	{
	    		if(STS+a[i]<ST)//如果石头每放完,则继续放
	    		{
	    			cout<<"石头个数:"<<a[j]<<"    ";
	    			cout<<"对应的价值为:"<<a[j]*b[j]<<endl;
	    			STS+=a[j];
	    			QS+=a[j]*b[j];
	    		}//否则则不进行
	    	}//直到这个循环结束后就出来求出总的价值
	    	cout<<"第"<<i+1<<"次的总价值为:"<<QS<<endl;
	    	cout<<endl;
	    	if(QS>sum1)
	    	{
	    		sum1=QS;
	    	}
	    }
	    cout<<"蛮力法背包最大的价值为:"<<sum1<<endl;
		return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值