日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Anigram单词(51Nod-1095)

發布時間:2025/3/17 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Anigram单词(51Nod-1095) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目

一個單詞a如果通過交換單詞中字母的順序可以得到另外的單詞b,那么定義b是a的Anigram,例如單詞army和mary互為Anigram。另:相同的2個單詞不算Anigram。現在給定一個字典,輸入Q個單詞,從給出的字典中找出這些單詞的Anigram。

輸入

第1行:1個數N,表示字典中單詞的數量。(1 <= N <= 10000)
第2 - N + 1行,字典中的單詞,單詞長度 <= 10。
第N + 2行:查詢的數量Q。(1 <= Q <= 10000)
第N + 3 - N + Q - 2行:用作查詢的單詞,單詞長度 <= 10。

輸出

共Q行,輸出Anigram的數量,如果沒有輸出0。

輸入樣例

5
add
dad
bad
cad
did
3
add
cac
dda

輸出樣例

1
0
2

思路:使用 map 排序后暴力查詢即可

源程序

#include<iostream> #include<cstdio> #include<cstdlib> #include<string> #include<cstring> #include<cmath> #include<ctime> #include<algorithm> #include<utility> #include<stack> #include<queue> #include<vector> #include<set> #include<map> #define E 1e-9 #define PI acos(-1.0) #define INF 0x3f3f3f3f #define LL long long const int MOD=7; const int N=50000+5; const int dx[]= {-1,1,0,0}; const int dy[]= {0,0,-1,1}; using namespace std;string str[10005]; int main(){int n;scanf("%d",&n);map<string,int> mp1;map<string,int> mp2;for(int i=1; i<=n; i++) {cin>>str[i];mp1[str[i]]++;sort(str[i].begin(),str[i].end());mp2[str[i]]++;}int q;scanf("%d",&q);string word;for(int i=1; i<=q; i++) {string word,temp;cin>>word;temp=word;sort(word.begin(),word.end());printf("%d\n",max(mp2[word]-mp1[temp],0));}return 0; }

?

總結

以上是生活随笔為你收集整理的Anigram单词(51Nod-1095)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。