Anagram Groups(字符串)
2024-09-06 20:13:33
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2316
理解错一点题意就能WA到死。。。题中对于重复的单词,只输出一个,但是重复的单词个数要加上
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <map>
using namespace std;
const int N=;
int vis[N];
vector<string>v[N];
map<string,int>mp;
struct node
{
int Size;
int num;
friend bool operator < (node a,node b)
{
if (a.Size == b.Size)
{
return v[a.num][] < v[b.num][];
}
return a.Size > b.Size;
}
} G[N];
int main()
{
string s[N],s2[N];
char ss[N];
int i = ;
mp.clear();
while(scanf("%s",ss)!=EOF)
{
if(ss[]=='')
break;
mp[ss]++;
if(mp[ss]==)
{
s[i] = ss;
sort(ss,ss+strlen(ss));
s2[i++] = ss;
}
}
int n = i;
int p = ;
memset(vis,,sizeof(vis));
for (int j = ; j < n; j++)
{
if (vis[j])
continue;
int Size = ;
for (int k = j; k < n; k++)
{
if (s2[j]==s2[k])
{
vis[k] = ;
v[p].push_back(s[k]);
if(mp[s[k]]>)
Size+=mp[s[k]]-;
}
}
G[p].Size = v[p].size()+Size;
G[p].num = p;
sort(v[p].begin(),v[p].end());
p++;
}
sort(G,G+p);
if (p > )
p = ;
for (int j = ; j < p; j++)
{
printf("Group of size %d:",G[j].Size);
for (int k = ; k < v[G[j].num].size(); k++)
{
cout<<" "<<v[G[j].num][k];
}
printf(" .\n");
}
return ;
}
最新文章
- selenium 富文本框处理
- Android入门(十二)SQLite事务、升级数据库
- mem_fun 例子
- HDU3952-几何
- atexit注册的函数是在main函数之后执行?
- 【leetcode】Majority Element (easy)(*^__^*)
- Scrum中的User Story
- BBSXP最新漏洞 简单注入检測 万能password
- int? 参数是这个的时候 是可以传入null的 而int的就不行
- sqlserver大容量日志文件处理
- 修改虚拟机内容导致oracle不能启动
- HDU 5455 Fang Fang 水题,但题意描述有问题
- Android源码博文集锦1
- 我的docker全套流程例子
- WebWorker 中将已处理好的 VDOM 数据提交主线程渲染 DOM
- c/c++ linux 进程间通信系列7,使用pthread mutex
- 17秋 软件工程 团队第五次作业 Alpha Scrum5
- VIM编辑器和VI编辑器的区别
- 告知你不为人知的UDP-疑难杂症和使用
- winform datagridview 不显示默认第一列 不显示未绑定列 数据源发生改变时自动更新 (转)