51 nod 1095 Anigram单词 利用map处理hash问题
来源:互联网 发布:来钱快软件 编辑:程序博客网 时间:2024/06/06 03:28
第1行:1个数N,表示字典中单词的数量。(1 <= N <= 10000)第2 - N + 1行,字典中的单词,单词长度 <= 10。第N + 2行:查询的数量Q。(1 <= Q <= 10000)第N + 3 - N + Q - 2行:用作查询的单词,单词长度 <= 10。
共Q行,输出Anigram的数量,相同的2个单词不算Anigram,如果没有输出0。
5adddadbadcaddid3addcacdda
我们准备两个map,第一的存储所有输入值出现的个数。 第二个存储每个输入值排序后出现的个数。
那么对于某一个字符,我们排序后的减去它本身出现的次数,就是anigram的次数了。
例题:
我们map1 存入
add 1dad 1bad 1cad 1did 1而map2对应这add 3
acd 1
ddi 1
我们查询add时,add在原式出现过一次,在查询add排序后出现了3次, 3-1 =2
我们查询dad时,dad在原式出现过一次,在查询dad时排序为add,出现了3次。 3-1=2
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<limits.h>
#include<iostream>
#include<queue>
#include<math.h>
#include<stack>
#include<vector>
#include<algorithm>
#include<map>
using namespace std;
int main()
{
map<string,int>mp1,mp2;
char str[110];
int n;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>str;
int len=strlen(str);
mp1[str]++;
sort(str,str+len);
mp2[str]++;
}
cin>>n;
for(int i=0;i<n;i++)
{
cin>>str;
int sum1=mp1[str];
int len=strlen(str);
sort(str,str+len);
int sum2=mp2[str];
cout<<sum2-sum1<<endl;
}
}
- 51 nod 1095 Anigram单词 利用map处理hash问题
- 51nod oj 1095 Anigram单词【map】
- 51nod 1095 Anigram单词(map)
- 51Nod 1095 Anigram单词 map
- 51nod 1095 Anigram单词
- 51nod 1095 Anigram单词
- 51nod-1095 Anigram单词
- 51nod 1095 Anigram单词
- 51nod 1095 Anigram单词
- 51Nod 1095 Anigram单词
- 51nod 1095 Anigram单词
- 51 NOD 1095 Anigram单词
- 51nod-1095 Anigram单词
- 51nod 1095 Anigram单词
- 【51Nod】1095 Anigram单词
- 51nod 1095 Anigram单词
- 51NOD 1095 Anigram单词
- 51nod 1095 Anigram单词
- Linux删除软链接
- 癫狂的dom——利用css3让dom动起来
- 全栈才是王道:配置阿里云服务器
- 关于Unsupported major.minor version 52.0 错误的解决方案
- 最简单的PHP接入微信消息事件
- 51 nod 1095 Anigram单词 利用map处理hash问题
- RecyclerView的常用分割线
- Spring Boot 配置文件 – 在坑中实践
- Linux 下如何运行Engine Java 程序
- vue-router
- 64位与32位编程的数据类型区别(C/C++)
- 高精度运算
- word2013退格后光标乱跳解决
- 面试涉及的网络基础