51nod 1095 Anigram单词
来源:互联网 发布:群晖 路由器开放端口 编辑:程序博客网 时间:2024/05/16 07:44
一个单词a如果通过交换单词中字母的顺序可以得到另外的单词b,那么定义b是a的Anigram,例如单词army和mary互为Anigram。现在给定一个字典,输入Q个单词,从给出的字典中找出这些单词的Anigram。
Input
第1行:1个数N,表示字典中单词的数量。(1 <= N <= 10000)第2 - N + 1行,字典中的单词,单词长度 <= 10。第N + 2行:查询的数量Q。(1 <= Q <= 10000)第N + 3 - N + Q - 2行:用作查询的单词,单词长度 <= 10。
Output
共Q行,输出Anigram的数量,相同的2个单词不算Anigram,如果没有输出0。
Input示例
5adddadbadcaddid3addcacdda
Output示例
102
先用map存每个字符串的原串的个数,再存下字符串排序之后的串的个数。
然后每次询问都能求出所给的串原串的数量和排序和的数量,相减便能得出答案。
代码如下:
#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<map>using namespace std;#define N 10010string a;map<string,int>str1,str2;int main(){ int i,j,n,m,q; scanf("%d",&n); for(i=1;i<=n;i++){ cin>>a; str1[a]++; sort(a.begin(),a.end()); str2[a]++; } scanf("%d",&q); while(q--){ cin>>a; int x=str1[a]; sort(a.begin(),a.end()); int y=str2[a]; printf("%d\n",y-x); } return 0;}
0 0
- 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单词
- 51nod 1095 Anigram单词
- 51nod 1095 Anigram单词
- 51NOD 1095 Anigram单词
- 1095 Anigram单词(51nod)
- 源码分析 There is no getter for property named '*' in 'class java.lang.String
- 蓝桥杯BASIC21 sine之舞
- java.net.ConnectException: Connection refused
- 排序算法之选择排序
- JVM关闭
- 51nod 1095 Anigram单词
- Android系统中Parcelable和Serializable的区别
- 关于View 的基本原理
- Linux监控重要进程的实现方法
- oc与swift混编
- java修饰符
- Unity获取游戏对象详解
- GCD死锁
- Spark 从入门到放弃 之 quick start