51Nod1095 Anigram单词

题目

一个单词a如果通过交换单词中字母的顺序可以得到另外的单词b,那么定义b是a的Anigram,例如单词army和mary互为Anigram。另:相同的2个单词不算Anigram。现在给定一个字典,输入Q个单词,从给出的字典中找出这些单词的Anigram。

思路

一个map保存原串出现次数,一个map保存排序串出现次数,减一下

代码

#include<bits/stdc++.h>
#define ll long long
#define db double
using namespace std;
int n,q;
char s[20],sp[20];
map<string,int>mp1;
map<string,int>mp2;
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>s;
        strcpy(sp,s);
        sort(sp,sp+strlen(sp));
        mp1[s]++;//cout<<s<<';'<<mp[s]<<endl;
        mp2[sp]++;
    }
    cin>>q;
    for(int i=1;i<=q;i++){
        cin>>s;
        strcpy(sp,s);
        sort(sp,sp+strlen(sp));
        //cout<<sp<<':'<<mp[sp]<<' '<<s<<':'<<mp[s]<<' ';
        cout<<mp2[sp]-mp1[s]<<endl;
    }
    return 0;
}

原文地址:https://www.cnblogs.com/sz-wcc/p/11236897.html

时间: 2024-10-14 17:48:45

51Nod1095 Anigram单词的相关文章

[51NOD1095] Anigram单词(map)

题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1095 字典的单词在map中排序和不排序各存1次,查的时候相减. 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 const int maxn = 10100; 5 int n, q; 6 char tmp[12]; 7 map<string, int> d1; 8 map<stri

51nod 1095 Anigram单词【hash/map/排序/字典树】

1095 Anigram单词 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题  收藏  关注 一个单词a如果通过交换单词中字母的顺序可以得到另外的单词b,那么定义b是a的Anigram,例如单词army和mary互为Anigram.现在给定一个字典,输入Q个单词,从给出的字典中找出这些单词的Anigram. Input 第1行:1个数N,表示字典中单词的数量.(1 <= N <= 10000) 第2 - N + 1行,字典中的单词,单词长度 <= 10

1095 Anigram单词(51nod)

原题链接:http://www.51nod.com/onlineJudge/questionCode.html#problemId=1095&noticeId=20791 老实说这题,我是很不想用字典树,因为不熟~~~但后来没搞出来,就用了字典树..........当然得参考一下大神的代码. 解法:用map统计相同单词... 然后把字符串按字典序排序,然后把字符串插入到字典树里面去 #include<stdio.h> #include<string.h> #include&

51Nod 1095 Anigram单词 | Hash

Input示例 5 add dad bad cad did 3 add cac dda Output示例 1 0 2 #include <iostream> #include <string.h> #include <algorithm> #include <map> using namespace std; #define MAXN 10001 char s[2*MAXN][15]; char str[15]; map<string,int>

51nod 1095 Anigram单词

http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1095 竟然错了10次,最后还是用字典树搞过去的,不过这题解法很多,二分,哈希,STL,排序 都可以搞. 字典树建树的时候保存节点出现的次数,因为可能大小写都有,所以开next[52]的数组足够了. 题目关键是相同字符串不能算,那么可以用map统计出现次数最后减去这个即可. 还有就是查找的时候,边查找边记数一直到字符串的结尾,并且如果还有分支的话那么需要减去分支的数,因为

html常用单词

htmllss常用单词head头body身体title标题table表格list列表item条款row行column列form表单input输入text文本password密码submit提交reset重置button按钮image图像anchor锚audio音频的video视频ruler标尺division划分label标签style样式script脚本select选择option选项paragraph段落color颜色backgyound背景class类blink闪烁italic斜体soli

电影功夫熊猫使用的单词分析

你英语四级过了吗?功夫熊猫看了吗?功夫熊猫使用了995个英语单词,你会说很简单吧,别急,我给你分析一下,这些单词中有236个单词不在四级词汇范围内,花两分钟时间看看你是否认识这些单词,单词后面跟的数字表示该单词在电影中出现的次数. 你也可以获取本文的分析程序,这样你就可以分析其他电影了.看一部电影之前,先通过这种方式分析一下,然后学习自己不认识的单词,然后再去看电影,如此这样坚持下去,英语水平就会有很大的提升. words(995): 1. you 2492. the 1893. i 1844.

storm单词计数 本地执行

import java.io.File; import java.io.IOException; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import org.apache.commons.io.FileUtils; import backtype.storm.Config; imp

Storm实验 -- 单词计数4

在上一次单词计数的基础上做如下改动: 使用 自定义  分组策略,将首字母相同的单词发送给同一个task计数 自定义 CustomStreamGrouping package com.zhch.v4; import backtype.storm.generated.GlobalStreamId; import backtype.storm.grouping.CustomStreamGrouping; import backtype.storm.task.WorkerTopologyContext;