细菌实验分组(C程序设计进阶 第2周)
2017-02-23 22:33
267 查看
编程题#5:细菌实验分组
注意: 总时间限制: 1000ms 内存限制: 65536kB描述
有一种细菌分为A、B两个亚种,它们的外在特征几乎完全相同,仅仅在繁殖能力上有显著差别,A亚种繁殖能力非常强,B亚种的繁殖能力很弱。在一次为时一个 小时的细菌繁殖实验中,实验员由于疏忽把细菌培养皿搞乱了,请你编写一个程序,根据实验结果,把两个亚种的培养皿重新分成两组。输入
输入有多行,第一行为整数n(n≤100),表示有n个培养皿。其余n行,每行有三个整数,分别代表培养皿编号,试验前细菌数量,试验后细菌数量。
输出
输出有多行:第一行输出A亚种培养皿的数量,其后每行输出A亚种培养皿的编号,按繁殖率升序排列。
然后一行输出B亚种培养皿的数量,其后每行输出B亚种培养皿的编号,也按繁殖率升序排列。
样例输入
12345651 10 34562 10 56443 10 45664 20 2345 20 232样例输出
12345673132254提示
亚种内部细菌繁殖能力差异 远远小于 亚种之间细菌繁殖能力差异。也就是说,亚种间任何两组细菌的繁殖率之差都比亚种内部两组细菌的繁殖率之差大。
这题的关键点:通过按序排列后,相邻差值的最大值来作为区分类别的标志。
代码:
//编程题#5:细菌实验分组 //逻辑:将各个繁殖率按升序排列,求出各相邻繁殖率之间的差值,最大差值即为区分A类和B类的分界线。 #include <iostream> using namespace std; int main() { int n = 0; cin >> n; double idRate[100] = { 0 }; //按id存储繁殖率 int idOrder[100] = { 0 };//记录id的顺序 for (int i = 0; i < n; i++) { double id,numStart, numFinal ; cin >> id >> numStart >> numFinal; idOrder[i] = id; idRate[i] = double(numFinal /numStart); } //对繁殖率按升序排列 //使得数组idRate和数组idOrder一一对应。 for (int i = 0; i < n-1; i++) for (int j = i + 1; j < n;j++) { if (idRate[i] > idRate[j]) { int changeRate = 0; changeRate = idRate[i]; idRate[i] = idRate[j]; idRate[j] = changeRate; int changeId = 0; changeId = idOrder[i]; idOrder[i] = idOrder[j]; idOrder[j] = changeId; } } //求相邻两繁殖率的差值,找出最大差值,取出其位置 int maxDifference = 0; int flagSplit = 0; for (int i = 0; i < n-1; i++) { int difference = idRate[i + 1] - idRate[i]; if (difference > maxDifference) { maxDifference = difference; flagSplit = i; } } //flagSplit位置及之前的为B类,之后的为A类 //输出A类 cout << n - (flagSplit+1) << endl; for (int i = flagSplit + 1; i < n; i++) { cout << idOrder[i] << endl; } //输出B类 cout << flagSplit + 1 << endl; for (int i = 0; i <= flagSplit; i++) { cout << idOrder[i] << endl; } return 0; }
相关文章推荐
- 细菌实验分组(C程序设计进阶第2周)
- 细菌实验分组
- 四大湖(C程序设计进阶第2周)
- 四大湖(C程序设计进阶 第2周)
- OpenJudge计算概论-细菌实验分组
- 票统计(C程序设计进阶第2周)
- 发票统计(C程序设计进阶 第2周)
- Tomorrow never knows?(C程序设计进阶第2周)
- 流感传染(C程序设计进阶 第2周)
- POJ C程序设计进阶 编程题#5:细菌分组实验
- poj 细菌实验分组
- poj 细菌实验分组
- 流感传染(C程序设计进阶第2周)
- 寻找下标(C程序设计进阶第2周)
- JAVA进阶 面向对象程序设计——第2周 对象交互【对象和对象之间的联系】
- 编程题#5:细菌实验分组 C语言
- C语言及程序设计进阶例程-35 标准文件读写方法
- [.net 面向对象程序设计进阶] (4) 正则表达式 (三) 表达式助手
- 南邮JAVA程序设计实验1 综合图形界面程序设计
- C++程序设计实验报告【5.1.3】