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 **/