一、题目描述
二、解题思路
这道题的大意是要找出出现次数最多的那个颜色。我定义了几个数组:color[]、colorMax[]、colorCount[].
color[]:用来储存输入的颜色。
colorMax[]:用来储存不同的颜色,当颜色出现不同时则存到该数组。
colorCount[]:用来计算颜色出现的次数,若颜色重复了,则数目加一,数组下标在比较的过程中与colorMax[]对应,也就实现了颜色与数量的对应,当找到最大数量的colorCount[]时,通过下标便可打印出颜色。
三、代码部分
<pre name="code" class="cpp">#include<iostream> #include<string> using namespace std; int main() { int n; string color[1001]; string colorMax[1001];//用来存储不同颜色的数组 while(cin >> n) { int colorCount[1001] = {0};//存储每种颜色所出现的次数,且下标与coloMax对应 int count = 0; if(n == 0) { break; } for(int i = 0; i < n; i++) { cin >> color[i]; } colorMax[0] = color[0]; for(int i = 1; i < n; i++) { int d = 0; for(int j = 0; j <= count; j++) { //若颜色相同,则colorCount加一,说明这个颜色的数量增加 if(color[i] == colorMax[j]) { colorCount[j]++; } else { d++; } } //若颜色不同,则count自增一存储这个不同的颜色 if(d == count + 1) { colorMax[++count] = color[i]; } } //找出出现次数最多的颜色 int max = colorCount[0]; int mark = 0; for(int i = 1; i <= count; i++) { if(colorCount[i] > max) { max = colorCount[i]; mark = i; } } cout << colorMax[mark] << endl; } return 0; }
