Description
有红黄蓝3种颜色的n个珠子,师傅希望悟空把它们排成红色珠子在左,黄色珠子居中,蓝色珠子在右的一行,然后告诉师傅,从左数起,第m个珠子是什么颜色。众所周知,悟空是只猴子,他没有这个耐心,你帮帮他吧。
Input
输入第一行为一个整数t(0<t<=10),表示测试用例个数。
每个测试用例占用两行,第1行为两个整数n(0<n<=1000)和m (0<m<=n),中间用空格隔开。n表示珠子的个数,m表示要输出排序后的第m个珠子颜色;第2行为n个字符构成的序列,序列中的字符为r, y,或者 b,分别表示红、黄、蓝三种珠子,字符中间没有空格。
Output
为每个测试用例单独一行输出指定的珠子颜色。
解题思路:这道题比较简单,直接使用一个数组对不同颜色的棋子进行统计,使用数组colorcount[3]进行统计。
出现一个 r→colorcount[0] ++
出现一个 y→colorcount[1] ++
出现一个 b→colorcount[2] ++
然后查看要求的位置,从r到b
#include <iostream>
#include <string.h>
using namespace std;
int colorcount[3];
int main(int argc, const char * argv[]) {
// insert code here...
int caseNum;
int ballNum, order;
cin >> caseNum;
while (caseNum >0) {
cin >> ballNum >> order;
memset(colorcount, 0, sizeof(colorcount));
char color;
while (ballNum --) {
cin >> color;
switch (color) {
case 'r':
colorcount[0] ++;
break;
case 'y':
colorcount[1] ++;
break;
case 'b':
colorcount[2] ++;
break;
default:
break;
}
}
if (order <= colorcount[0]) cout << "r" << endl;
else if ( order <= (colorcount[0] + colorcount[1])) cout << "y" << endl;
else cout << "b" << endl;
caseNum --;
}
return 0;
}