**图灵杯 J** 简单的变位词
来源:互联网 发布:小鱼办公软件下载 编辑:程序博客网 时间:2024/06/09 07:44
Description
变位词是指改变某个词的字母顺序后构成的新词。蔡老板最近沉迷研究变位词并给你扔了一道题:
给你一些单词,让你把里面的变位词分组找出来。互为变位词的归为一组,最后输出含有变位词最多的前五组。如果有组数相同的按照字典序输出。Input
输入包含由小写字母组成的单词,用换行分割,被EOF终止。 输入数据不超过30000个单词。Output
输出五组包含单词数量最多的变位词,如果少于五组,输出全部。对每组输出,写出它的大小和成员词,成员词按字典序排序用空格分隔,每组输出之间用换行分隔,相同词只输出一次,但算个数。Sample Input
neuq
tea
bate
beat
caret
trace
nueq
carte
cater
crate
abet
ate
eat
beta
eta
signal
Sample Output
Group of size 5: caret carte cater crate trace .
Group of size 4: abet bate beat beta .
Group of size 4: ate eat eta tea .
Group of size 2: neuq nueq .
Group of size 1: signal .
这个题和字数上一个题差不多,又不太一样,紫书上那个题比这个简单…
我主要是不知道怎么样把互为变位词的归为一组.搜了搜网上的解题报告,感觉像是打开了新世界的大门︿( ̄︶ ̄)︿超棒的。而且他们大多数都是用哈希做的,可惜我还没学,等我学会了再来把那种做法补过来。
#include <cstdio>#include <map>#include <algorithm>#include <vector>#include <string>#include <iostream>using namespace std;string s, ss;map<string, int> p;vector<string> data[31234];bool cmp(vector<string> a, vector<string> b){ if(a.size() != b.size()) return a.size() > b.size(); for(int i = 0; i < a.size(); i++) { if(a[i] != b[i]) return a[i] < b[i]; }}int main(){ int i, head = 1, j; while(cin >> s) { ss = s; sort(ss.begin(), ss.end()); if(!p[ss]) { p[ss] = head++;//不同于以往的p[ss]++, 他是把每一种的单词有一个编号, 我当时一直在想p[ss]++; } data[p[ss]].push_back(s);//这样就把互为变位词的归为了一组; } for(i = 1; i < head; i++) { sort(data[i].begin(), data[i].end()); unique(data[i].begin(), data[i].end()); } sort(data + 1, data + head, cmp);//这个排序也刷新的我的世界观; if(head > 5) { for(i = 1; i <= 5; i++) { printf("Grop of size %d: ", data[i].size()); for(j = 0; j < data[i].size(); j++) { cout << data[i][j] << " "; } cout << '.' << endl; } } else { for(i = 0; i < head; i++) { printf("Grop of size %d: ", data[i].size()); for(j = 0; j < data[i].size(); j++) { cout << data[i][j] << " "; } cout << '.' << endl; } } return 0;}
- **图灵杯 J** 简单的变位词
- 问题 J: 简单的变位词 [hash]
- 图灵杯-第四届“图灵杯”NEUQ-ACM 程序设计竞赛-J-简单的变位词
- 2017图灵杯问题J 简单的变位词(哈希算法)
- 变位词的实现
- (变位词)的操作
- 简单的英文变位词聚类算法
- 找出单词的变位词
- 变位词程序的实现
- 变位词程序的实现
- 变位词程序的实现
- j简单的servlet
- 变位词
- 变位词
- 变位词
- 变位词
- 变位词
- 变位词
- react文档
- 【CodeM编程】音乐研究
- 如何在JSP页面实现Word文件的预览
- IdentifierLoadAccess and Session.byId()
- [LeetCode]624. Maximum Distance in Arrays
- **图灵杯 J** 简单的变位词
- 线程管理
- SDUT-1216 杨辉三角
- 【CodeM编程】锦标赛
- 常用API
- c++ builder 中的 XMLDocument 类详解(12) -关于 XML 属性
- Codeforces Round #419 (Div. 2) C.Karen and Game 思维
- JVM内存区域分区及OOM分析
- c++ builder 中的 XMLDocument 类详解(13)