码迷,mamicode.com
首页 > 其他好文 > 详细

完美世界第一题:成功放入背包物品个数

时间:2016-04-25 22:39:07      阅读:257      评论:0      收藏:0      [点我收藏+]

标签:

#include <iostream>
#include <vector>
using namespace std;
/************************************************************************/
/* 给定物品个数M,背包个数N,每个背包容量k,依次输入物品的重量
当物品放不下背包时,如果还有背包则放入下一背包,如果没有,直接扔掉。
当下一背包中放入物品后,该背包封口即不可再放物品。
用例输入: 
5 5 2 
4 3 4 2 1
输出:3																	*/
/************************************************************************/

int succssPutInKnapsack(const int M,const int k,const int N,vector<int>  &weight)
{
	int result = 0;
	vector<int> pack(N,0);
	int j=0;
	for (int i=0;i<M;i++)
	{
		if (weight[i] <= k)
		{
			if (weight[i] + pack[j] <= k)
			{
				pack[j] += weight[i];
				result++;
			}
			else
			{
				if (i == M-1)
					return result;
				if (j+1 != N)
				{
					j++;
					pack[j] += weight[i];
					result++;
				}
			}
		}
	}
	return result;
}

int main()
{
	int M,N,k,weighti;
	vector<int> weight;
	cin>>M>>k>>N;
	for (int i=0;i<M;i++)
	{
		cin>>weighti;
		weight.push_back(weighti);
	}
	cout<<"成功拿走物品数: "<<succssPutInKnapsack(M,k,N,weight)<<endl;
	system("pause");
	return 0;
}

  

完美世界第一题:成功放入背包物品个数

标签:

原文地址:http://www.cnblogs.com/keleshaoye/p/5432975.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!