Let the Balloon Rise HDU - 1004

Let the Balloon Rise HDU - 1004,第1张

Let the Balloon Rise HDU - 1004

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 
using namespace std;

int main() {
	map::iterator it;
	map p;
	string s, ans;
	int n;
	while (cin >> n, n) {
		p.clear();//否则上一次的仍会被记录
		
		for (int i = 1; i <= n; i++) {
			cin >> s;
			p[s]++;
		}
		
		int maxn = 0;
		
		for (it = p.begin(); it != p.end(); it++) {
			if (it->second > maxn) {
				maxn = it->second;
				ans = it->first;
			}
		}
		
		cout << ans << endl;
	}
	return 0;
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/3970872.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-10-21
下一篇 2022-10-21

发表评论

登录后才能评论

评论列表(0条)

保存