description
小明现在有多种颜色的气球,需要你统计它们的个数,并找出数量最多的那种颜色。
Input
有多组样例输入。每组样例第一行输入一个整数N (0 < N <= 1000) -- 代表一共有N个气球。接下来N行每行输入一个不多于15个字母的字符串代表颜色。
N=0代表输入结束。
Output
每组样例数据输出数量最多的那种颜色的气球。(保证输出唯一)
Sample Input
5 green red blue red red 3 pink orange pink 0
Sample Output
red pink
方法一,利用strcmp函数比较
#include#include using namespace std; char a[1020][20]; int flag; int main() { int t, n = 0; while (cin >> t) { if (t == 0) break; flag = 0; for (int i = 0; i < t; i++) { cin >> a[i]; } for (int i = 0; i < t; i++) { int m = 0; for (int j = 0; j < t; j++) { if (!strcmp(a[i], a[j])) { m++; } } if (m > n) { n = m; flag = i; } } cout << a[flag] << endl; } return 0; }
方法二自己编写函数比较
#include#include using namespace std; char a[1020][20]; int flag; int strcmpp(char *a, char *b) { if (strlen(a) != strlen(b)) return 1; else while ((*a == *b) && (*a != '')) { a++; b++; }; if (*a != '') return 1; else return 0; }; int main() { int t, n = 0; while (cin >> t) { if (t == 0) break; flag = 0; for (int i = 0; i < t; i++) { cin >> a[i]; } for (int i = 0; i < t; i++) { int m = 0; for (int j = 0; j < t; j++) { if (!strcmpp(a[i], a[j])) { m++; } } if (m > n) { n = m; flag = i; } } cout << a[flag] << endl; } return 0; }
方法三利用字符串的定义比较
#include#include #include using namespace std; int main() { string s[1001]; int n, sum[1001]; while (cin >> n && n) { for (int i = 0; i < n; ++i) { cin >> s[i]; sum[i] = 1; } sort(s, s + n); //字符串排序,将相同的字符串放在一起 int max = 0; for (int i = 1; i < n; i++) { if (s[i] == s[i - 1]) //利用整型数组进行同步计数 sum[i] += sum[i - 1]; if (sum[i] > sum[max]) max = i; } cout << s[max] << endl; } return 0; } //error C2679: 二进制“>>”: 没有找到接受“std::string”类型的右 *** 作数的运算符(或没有可接受的转换) //原因:未包含#include ,还不能是#include
方法四利用map
#include#include #include
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)