(使用STL自带的排序函数进行编程7.3.14)UVA 10062 Tell me the frequencies!(求一个字符出现的次数(包括字母和数字)&&按出现的次数降序)

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>

using namespace std;

const int maxn = 150;
struct A{
	char asc;
	int num;
}a[maxn];

int sum[maxn];

bool cmp(const A& a , const A& b){
	if(a.num != b.num){
		return a.num < b.num;
	}

	return a.asc > b.asc;
}


int main(){
	char str[1010];
	int counter = 0;
	while(gets(str)){//注意不要写成scanf("%s",str),那样会WA,因为这道题需要处理空格

		if(counter++){
			printf("\n");
		}
		memset(a,0,sizeof(a));
		int len = strlen(str);

		int i;
		for(i = 0 ; i < len ; ++i){//使用结构体来计算一个字符出现了多少次
			a[str[i]].asc = str[i];
			a[str[i]].num++;
		}

		sort(a,a+maxn,cmp);

		for(i = 0 ; i < maxn ; ++i){
			if(a[i].num != 0){
				printf("%d %d\n",a[i].asc,a[i].num);
			}
		}

	}

	return 0;
}

你可能感兴趣的:((使用STL自带的排序函数进行编程7.3.14)UVA 10062 Tell me the frequencies!(求一个字符出现的次数(包括字母和数字)&&按出现的次数降序))