1 //program 2-1 2 #include <iostream> 3 #include <algorithm> 4 const int N=1000005; 5 using namespace std; 6 7 double w[N]; //古董的重量数组 8 int main() 9 { 10 double c; 11 int n; 12 cout<<"请输入载重量c及古董个数n:"<<endl; 13 cin>>c>>n; 14 cout<<"请输入每个古董的重量,用空格分开: "<<endl; 15 for(int i=0;i<n;i++) 16 { 17 cin>>w[i]; //输入每个物品重量 18 } 19 sort(w,w+n); //按古董重量升序排序 20 double tmp=0.0; 21 int ans=0; // tmp为已装载到船上的古董重量,ans为已装载的古董个数 22 for(int i=0;i<n;i++) 23 { 24 tmp+=w[i]; 25 if(tmp<=c) 26 ans++; 27 else 28 break; 29 } 30 cout<<"能装入的古董最大数量为Ans="; 31 cout<<ans<<endl; 32 return 0; 33 } 34 35 //可以输出古董编号 36 /** 37 struct antique{ 38 int id; //古董的编号 39 double w; //古董的重量 40 }s[N]; 41 bool cmp(antique a, antique b)//比较函数 42 { 43 return a.w < b.w; //指明按照古董重量升序排列 44 } 45 int main() 46 { 47 double c; 48 int n; 49 cout<<"请输入载重量c及古董个数n:"<<endl; 50 cin>>c>>n; 51 cout<<"请输入每个古董的重量,用空格分开: "<<endl; 52 for(int i=0;i<n;i++) 53 { 54 s[i].id=i+1; 55 cin>>s[i].w; //输入每个古董重量,用空格隔开 56 } 57 sort(s,s+n,cmp); 58 double tmp=0.0; 59 int ans =0; //ans记录已经装载的古董个数,tmp代表装载到船上的古董的重量 60 for(int i=0;i<n;i++) 61 { 62 tmp += s[i].w; 63 if(tmp<=c) 64 ans ++; 65 else 66 break; 67 } 68 cout<<"能装入的古董最大数量为Ans = "; 69 cout<<ans<<endl; 70 cout<<"装入的古董编号为"; 71 for(int i=0;i<ans;i++) 72 { 73 cout<<s[i].id<<" "; 74 } 75 return 0; 76 } 77 **/