码迷,mamicode.com
首页 > 其他好文 > 详细

51Nod1095 Anigram单词

时间:2019-07-24 11:31:46      阅读:91      评论:0      收藏:0      [点我收藏+]

标签:mes   strcpy   double   字典   cin   ret   一个   define   pre   

题目

一个单词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;
}

51Nod1095 Anigram单词

标签:mes   strcpy   double   字典   cin   ret   一个   define   pre   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!