uva 10420

题意:给你几个国家,以及它包含的人名,让你计算同一个国家的人数,结果按字典序输出


#include <iostream>
#include <cstdio>
#include <cstring>
#include <stdlib.h>
using namespace std;

struct data
{
	char country[20];
	int num;
	int visit;
}str[2010];

int temp(void const *p,void const *q)
{
	return strcmp( (*(data *)p).country , (*(data *)q).country );
}

int main()
{
	int n,i,j;
	char ch[90];
	while (scanf("%d",&n) != EOF )
	{
		getchar();
		for ( i = 0 ; i < n ; i++)
		{
			gets(ch);
			int len = strlen(ch);
			for ( j = 0 ; j < len ; j++)
				if (ch[j] == ' ')
					break;
                        strncpy(str[i].country,ch,j);
			int l = strlen(str[i].country);
			str[i].country[l] = '\0';
			str[i].num = 1 ;
			str[i].visit = 0 ;
		}
		for ( i = 0 ; i < n ; i++)
		{
			if ( !str[i].visit )
				for ( j = i + 1 ; j < n ; j++)
				{
					if ( !str[j].visit)
					{
						if ( strcmp(str[i].country,str[j].country) == 0)
						{
							str[i].num++;
							str[j].visit = 1;
						}

					}
				}
		}
		qsort(str,n,sizeof(str[0]),temp);
		for ( i = 0 ; i < n ; i++)
			if ( !str[i].visit)
				printf("%s %d\n",str[i].country,str[i].num);
	}
	return 0;
}



你可能感兴趣的:(uva 10420)