10420 - List of Conquests

题目:10420 - List of Conquests

题目大意:计算有多少个女人属于同一个国家,输出按字典序。

解题思路:只需将国家名保存就可以了,之后重小到大排列,再统计重复的国家的个数,最后按顺序输出每一个不同的国家名,并给出个数。

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;

const int N = 80;
const int L = 2005;
int t;

struct WORD {

	char a[N];
} s[L];

bool cmp_string(const WORD & a, const WORD & b) {

	if(strcmp(a.a , b.a) < 0)
	return true;
	return false;
}

int main() {
	
	scanf("%d", &t);
	memset(s, 0, sizeof(s));
	for (int i = 0; i < t; i++) {

		scanf("%s", s[i].a);
	//	fflush(stdin);
		gets(s[L - 1].a);
	}
	sort(s, s + t, cmp_string);
	int count = 0;
	for (int j = 0; j < t; j++) {

		if(strcmp(s[j].a, s[j + 1].a) != 0) {

		count++;
		printf("%s %d\n", s[j].a, count);
		count = 0;
		}
		
		else 
			count ++;


	}

	return 0;

}

用map会更简单,map主要是巧用了映射关系,将每一个不同的string  映射int数组对应的元素

http://blog.csdn.net/synapse7/article/details/12903667


你可能感兴趣的:(10420 - List of Conquests)