博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 5688 Problem D
阅读量:4983 次
发布时间:2019-06-12

本文共 1095 字,大约阅读时间需要 3 分钟。

Problem D

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)

Total Submission(s): 182    Accepted Submission(s): 126

Problem Description
度 熊所居住的 D 国,是一个完全尊重人权的国度。以至于这个国家的所有人命名自己的名字都非常奇怪。一个人的名字由若干个字符组成,同样的,这些字符的全排列的结果中的每 一个字符串,也都是这个人的名字。例如,如果一个人名字是 ACM,那么 AMC, CAM, MAC, MCA, 等也都是这个人的名字。在这个国家中,没有两个名字相同的人。
度熊想统计这个国家的人口数量,请帮助度熊设计一个程序,用来统计每一个人在之前被统计过多少次。
 

 

Input
这里包括一组测试数据,第一行包含一个正整数
N,
接下来的N行代表了N个名字。N不会超过100,000,他们的名字不会超过40位.
 

 

Output
对于每输入的一个人名,输出一个整数,代表这个人之前被统计了多少次。
 

 

Sample Input
5
ACM
MAC
BBA
ACM
BAB
 

 

Sample Output
0
1
0
2
1
 

 

Source
 
 
 
解析:首先对表示每个人名字的字符串重新排序,这样每个人就只有唯一一个表示其名字的字符串。问题就转化为了相同的字符串在之前出现了多少次,用map再合适不过了。
 
 
 
1 #include 
2 #include
3 #include
4 #include
5 #include
6 using namespace std; 7 8 char s[41]; 9 map
m;10 11 int main()12 {13 int n;14 scanf("%d", &n);15 m.clear();16 while(n--){17 scanf("%s", s);18 int len = strlen(s);19 sort(s, s+len);20 printf("%d\n", m[s]++);21 }22 return 0;23 }

 

转载于:https://www.cnblogs.com/inmoonlight/p/5510382.html

你可能感兴趣的文章
BZOJ 1863: [Zjoi2006]trouble 皇帝的烦恼( 二分答案 )
查看>>
try catch
查看>>
slf4j
查看>>
Orcal 给表增加一个自增的ID
查看>>
C#语言和SQL Server数据库技术_程序数据集散地:数据库
查看>>
ES6学习之变量的解构赋值
查看>>
PHP 生成图片缩略图函数
查看>>
Boost Bimap示例
查看>>
ESLint 使用入门
查看>>
流水作业调度
查看>>
涨姿势系列之——内核环境下内存映射函数
查看>>
遍历数组批量更新数组里元素的某一项属性
查看>>
github 收藏项目的方法
查看>>
九的余数
查看>>
北京师范大学第十五届ACM决赛-重现赛K Keep In Line ( 字符串模拟实现)
查看>>
(转)C# — WinForm 消息框的使用
查看>>
时间管理(转)
查看>>
Future FutrueTask Callable类源码说明以及原理使用
查看>>
flask 外键关系和多对多查询
查看>>
接收行数,打印平行四边形
查看>>