文章出處
文章列表
// 0.1背包求解.cpp : 定義控制臺應用程序的入口點。
//
#include "stdafx.h"
#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;
}
|
結語
> 如果你還需要了解更多技術文章信息,請繼續關注白衣秀才的博客
個人網站:http://penglei.top/
Github:https://github.com/whitescholars
微博:http://weibo.com/u/3034107691?refer_flag=1001030102_&is_all=1
文章列表
全站熱搜