• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

POJC程序设计进阶编程题#5:细菌分组实验

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

编程题#5:细菌实验分组

来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩。)

注意: 总时间限制: 1000ms 内存限制: 65536kB

描述

有一种细菌分为A、B两个亚种,它们的外在特征几乎完全相同,仅仅在繁殖能力上有显著差别,A亚种繁殖能力非常强,B亚种的繁殖能力很弱。在一次为时一个 小时的细菌繁殖实验中,实验员由于疏忽把细菌培养皿搞乱了,请你编写一个程序,根据实验结果,把两个亚种的培养皿重新分成两组。

输入

输入有多行,第一行为整数n(n≤100),表示有n个培养皿。

其余n行,每行有三个整数,分别代表培养皿编号,试验前细菌数量,试验后细菌数量。

输出

输出有多行:

第一行输出A亚种培养皿的数量,其后每行输出A亚种培养皿的编号,按繁殖率升序排列。

然后一行输出B亚种培养皿的数量,其后每行输出B亚种培养皿的编号,也按繁殖率升序排列。

样例输入

5 1 10 3456 2 10 5644 3 10 4566 4 20 234 5 20 232

样例输出

3 1 3 2 2 5 4 

提示

亚种内部,细菌繁殖能力差异远远小于亚种之间细菌繁殖能力的差异。

也就是说,亚种间任何两组细菌的繁殖率之差都比亚种内部两组细菌的繁殖率之差大。


 

 1 #include <iostream>
 2 using namespace std;
 3 int main() {
 4   int n; // n为细菌的数量
 5   // id记录细菌的编号, rate记录细菌的繁殖率,第i个细菌对应id[i]和rate[i]
 6   int id[100];
 7   double rate[100];
 8 
 9   cin >> n;
10   for (int i = 0; i < n; i++) {
11     int initial, final;
12     cin >> id[i] >> initial >> final;
13     rate[i] = (double)final / initial;
14   }  
15 
16 // 对整个细菌排序
17   for (int i = 0; i < n; i++) {
18     for (int j = 0; j < n - i - 1; j++) {
19       if (rate[j + 1] > rate[j]) {
20         int tmpId = id[j];
21         id[j] = id[j + 1];
22         id[j + 1] = tmpId;
23         double tmpRate = rate[j];
24         rate[j] = rate[j + 1];
25         rate[j + 1] = tmpRate;
26       }
27     }
28   }  
29 
30 // 记录最大的差
31   double maxDiff = 0;
32   // 和最大差的下标
33   int maxDiffIndex = 0;
34   for (int i = 0; i < n - 1; i++) {
35     double diff = rate[i] - rate[i + 1];
36     if (maxDiff < diff) {
37       maxDiff = diff;
38       maxDiffIndex = i;
39     }  
40   }
41   
42   //输出繁殖率较大的那组细菌
43   cout << maxDiffIndex + 1 << endl;
44   for (int i = maxDiffIndex; i >= 0; i--) {
45     cout << id[i] << endl;
46   }
47 
48   //输出繁殖率较小的那组细菌
49   cout << n - maxDiffIndex - 1 << endl;
50   for (int i = n - 1; i >= maxDiffIndex + 1; i--) {
51     cout << id[i] << endl;
52   }
53   return 0;
54 }

 

 

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
c#用牛顿法计算根号下2的值发布时间:2022-07-14
下一篇:
C#写windows服务的权限。(可以对C盘等进行读写等等)发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap