=-=算法的经典例题,供大家参考。先简略更新,如果大家觉得不错我就详细分析一下这些问题。
题目是输入物品数量和背包大小,然后输入各物品的重量,求所能存放的最大物品数。
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
double w[1000]; //物品重量
double c; //背包总容量
int n; //物品个数
cin>>c>>n;
for(int i=0;i<n;i++)
{
cin>>w[i];
}
sort(w,w+n); //从小到大排序
double tmp=0.0; //已用背包空间
int ans = 0; //背包内物品数量
for(int i=0;i<n;i++)
{
tmp+=w[i];
if(tmp<c)
{
ans++;
}
else
{
tmp-=w[i];
break;}
}
cout<<tmp<<endl;
cout<<ans<<endl;
}
样例