问题 C: 酷酷的单词

题目描述

输入一些仅由小写字母组成的单词。你的任务是统计有多少个单词是“酷”的,即每种字母出现的次数都不同。
比如 ada 是酷的,因为 a 出现 2 次,d 出现 1 次,而 1 和 2 不同。再比如,banana 也是酷的,
因为 a 出现 3 次,n 出现 2 次,b 出现 1 次。但是,bbacccd 不是酷的,因为 a 和 d 出现的次数相同(均为 1 次)。

输入

输入包含不超过 30 组数据。每组数据第一行为单词个数 n (1<=n<=10000)。以下 n 行各包含一个单词,字母个数为 1~30。

输出

对于每组数据,输出测试点编号和酷单词的个数。

样例输入

2
ada
bbacccd
2
illness
a

样例输出

Case 1: 1
Case 2: 0

题意,单词个数不能重复, 有一个重复就不是酷的了,因为单词个数很小,枚举一下就可以了。

代码:

# include <stdio.h>
# include <string.h>

struct qwe
{
	int q;
	int w;
}b[130];

int main(void)
{
	int n, sum, w = 0;
	while (~ scanf("%d", &n))
	{
		sum = 0;
		w ++;
		while (n --)
		{
			char a[31];
			memset(b, 0, sizeof(b));
			scanf("%s", a);
			int d = strlen(a);
			if (d == 1)
			{
				continue;
			}
			int i, j;
			for (i = 0; i < d; i ++)
			{
				b[a[i]].q ++;   // 出现一次加一次
				b[a[i]].w = 1;  // 判断这个字符是不是出现过
			}
			int qqq = 0;
			for (i = 1; i <= 31; i ++)  // 最大个数不超过30个 枚举31次就可以了
			{
				int c = 0;
				for (j = 97; j <= 122; j ++) // 全是小写字符, 对应的ascll为97-122。
				{
					if (b[j].w == 1)  // 是否出现过
					{
						if (b[j].q == i)  // 出现一次 加1。
							c ++;
					}
				}
				if (c >= 2) // 有一个出现二次的就不是酷的,跳出
				{
					qqq = 1;
					break;
				}	
			}
			if (qqq == 0)
				sum ++;
		}
		printf("Case %d: %d\n", w, sum);
	}
	return 0;
} 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值