#include<iostream>
#include<algorithm>
using namespace std;
const int N=1000005;
double w[N];
int main()
{
double c;
int i,n;
cout<<"请输入载重量c及古董个数n:"<<endl;
cin>>c>>n;
cout<<"请输入每个古董的重量,用空格分开:"<<endl;
for(i=0;i<n;i++)
cin>>w[i];
sort(w,w+n);//升序排序
double temp=0.0;//temp为已经装载到船上的古董的重量
int ans=0;//ans为已经载到船上的古董个数
for(i=0;i<n;i++)
{
temp+=w[i];
if(temp<=c)
ans++;
else
break;
}
cout<<"能装入的古董最大数量为ans=";
cout<<ans<<endl;
return 0;
}
优化处理:
#include<iostream>
#include<algorithm>
using namespace std;
const int N=1000005;
double w[N];
int main()
{
double c;
int i,n;
cout<<"请输入载重量c及古董个数n:"<<endl;
cin>>c>>n;
cout<<"请输入每个古董的重量,用空格分开:"<<endl;
for(i=0;i<n;i++)
cin>>w[i];
sort(w,w+n);//升序排序
double temp=0.0;//temp为已经装载到船上的古董的重量
int ans=0;//ans为已经载到船上的古董个数
for(i=0;i<n;i++)
{
temp+=w[i];
if(temp>=c)
{
if(temp==c)//假如刚刚好,最后一个可以放。
ans=i+1;//此处减少了运算次数,降低了时间复杂度。
else//假如满了,最后一个不可以放。
ans=i;
break;
}
}
cout<<"能装入的古董最大数量为ans=";
cout<<ans<<endl;
return 0;
}