标签:
为了帮助笨笨熊提前通知朋友。请你依据笨笨熊的办法。帮忙算出:须要纸盒的最少数目是多少?
执行时间限制: 无限制
内存限制: 无限制
输入:
整数V——纸盒的容积。
整数N——物品的总数目N;
共N个整数(相应N个物品的体积,每一个整数用空格隔开)。
输出:
整数M——须要纸盒的最少数目;
例子输入:
10
2
2 3
例子输出:
1
假设最后剩余一个则单独放置。每放一次盒子数加1。
#include <iostream> #include <vector> #include <algorithm> using namespace std; bool order(int a,int b); int main(){ int v,n,m=0,input,first,last; vector<int> obj; cout << "纸盒的容积V:"; cin >> v; cout << "物品的总数目N:"; cin >> n; cout << "这N个物品的体积各自是:"; for(int i=0;i!=n;i++) { cin >> input; obj.push_back(input); } // cout << "输入的是:"; // // for(i=0;i!=n;i++) // { // // cout <<obj[i]<<" "; // } // cout <<endl; sort(obj.begin(),obj.end(),order); //降序排列obj中的元素。 // // cout << "排序后:" ; // for(int so=0;so!=obj.size();so++) cout << obj[so]<<" "; // cout <<endl; first=0; //较大的物品 last=obj.size()-1; //较小的物品 if(obj[first]>v) { cout <<"ERROR:输入的数超过容器容积"<<endl; return 1; } if(n==1) m=1; //仅仅有一个物品。 while(first<last) { if(obj[first]+obj[last]<v+1) //较大的物品与较小的物品放在一起。 { m++; first++; last--; } else {m++;first++;} //较大的物品单独放。 if(first==last) m++; //最后剩余一个单独放 } cout << "至少须要" << m<<"个容器" << endl; return 0; } bool order(int a,int b) { return a>b; //降序排列 }
版权声明:本文博主原创文章。博客,未经同意不得转载。
标签:
原文地址:http://www.cnblogs.com/bhlsheji/p/4802140.html