The Child and Homework
题目:
每组数据输入4行数据(含空格,含前缀(如:A.))如果这4行数据中含有好选项,则输出好选项的选项,否则,输出“C”;
好选项:
如果一个选项长度大于等于其他三个选项的两倍,或者小于等于其他三个选项的两倍,则是好选项。
代码:
要判断是否是好选项,实际上是要让最大的与第二大的比较,最小的与第二小的比较,最后得出结论,
所以关键是获得正确的最大项,最小项,第二大和第二小的项;
并做出正确的判断条件。
#include <iostream> #include <string> #include <cstring> using namespace std; int main() { string s; int max = 0, cmax = 5, min = 0, cmin = 6, i = 0; int a[10] = {0, 0, 0, 0, 0, -1000, 1000000};//给cmax 和 cmin 附初值 while(getline(cin, s)) { a[i] = s.length() - 2; //减去前缀的长度 if(a[i] > a[max]) { cmax = max; max = i; }else if(a[i] > a[cmax] && i > 0) { //排除了当a[0]是最大或者最小的情 cmax = i; //此时max = min = 0; }if(a[i] < a[min]) { cmin = min; min = i; }else if(a[i] < a[cmin] && i > 0) { cmin = i; } if(++i >= 4) { if(a[max] >= a[cmax] * 2 && a[min] * 2 > a[cmin] ) { char c = max + 65; cout << c << endl; }else if(a[min] * 2 <= a[cmin] && a[max] < a[cmax] * 2) { char c = min + 65; cout << c << endl; }else { cout << "C\n"; } i = 0; max = 0; cmax = 5; min = 0; cmin = 6; } } return 0; }