UVa-156-反片语
这题比较精妙的是,我们对于单词重排,实际上是进行了标准化的处理,即按照字典序排序。
这样的话,就很方便地处理了单词的重排问题,我们不需要使用全排列函数进行排列尝试,我们直接化简为一,然后进行比较就可以了。
然后我们使用map映射,映射每个单词的出现次数,只有等于一的,我们才输出原版的单词。
最后输出的时候我们对于最初读入的单词库,进行遍历,看它的映射值为多少,先写入,再排序,最后输出即可。
注:sort和se的默认排序都是按照字典序排序的。
#include <iostream>
#include <string>
#include <map>
#include <vector>
#include <cctype>
#include <algorithm>
using namespace std;
map<string, int> cnt;
vector<string> words;
string repr(const string &s)
{
string ans = s;
for (int i = 0; i < ans.length();i++)
ans[i] = tolower(ans[i]);
sort(ans.begin(), ans.end());
return ans;
}
int main()
{
string s;
while (cin>>s) {
if (s[0]=='#')
break;
words.push_back(s);
string r = repr(s);
if (!cnt.count(r))
cnt[r]=0;
cnt[r]++;
}
vector<string> ans;
for (int i = 0; i < words.size();i++) {
if (cnt[repr(words[i])]==1)
ans.push_back(words[i]);
}
sort(ans.begin(), ans.end());
for (int i = 0; i < ans.size();i++)
cout << ans[i] << endl;
return 0;
}
UVa-156-反片语的更多相关文章
- uva 156 - Ananagrams (反片语)
csdn:https://blog.csdn.net/su_cicada/article/details/86710107 例题5-4 反片语(Ananagrams,Uva 156) 输入一些单词,找 ...
- STL语法——映射:map 反片语(Ananagrams,UVa 156)
Description Most crossword puzzle fans are used to anagrams--groups of words with the same letters i ...
- 反片语 UVA 156
//该单词不能通过字母重排,得到输入文本中的另外一个单词.在判断是否满足条件时,字母部分大小写 #include<iostream> #include<vector> #inc ...
- 反片语 (Ananagrams,UVa 156)
题目描述: #include <iostream> #include <string> #include <cctype> #include <vector& ...
- 反片语(Ananagrams,Uva 156)
输入一些单词,找出所有满足如下条件的单词:该单词不能通过字母重排,得到输入文 本中的另外一个单词.在判断是否满足条件时,字母不分大小写,但在输出时应保留输入中 的大小写,按字典序进行排列(所有大写字母 ...
- UVa 156 (映射 map)
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- 反片语(UVa156)
题目具体描述见:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=835&a ...
- UVA 156 Ananagrams (STL multimap & set)
原题链接: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=98&p ...
- UVA 156 Ananagrams ---map
题目链接 题意:输入一些单词,找出所有满足如下条件的单词:该单词不能通过字母重排,得到输入文本中的另外一个单词.在判断是否满足条件时,字母不分大小写,但在输出时应保留输入中的大小写,按字典序进行排列( ...
- UVa 156 Ananagrams
题意:给出一些单词,在这些单词里面找出不能通过字母重排得到的单词(判断的时候不用管大小写),然后按照字典序输出. 学习的紫书的map= = 将每一个单词标准化 先都转化为小写,再排序(即满足了题目中说 ...
随机推荐
- Windows 2008 R2 如何安装.net framework 3.5
服务器中安装sql server2012 , 安装过程中提示没有此 “ Framework 3.5.1 功能 ” , 是不是很尴尬 于是简单记录安装 Framework 3.5.1 功能的步骤 一. ...
- 安装CocoaPods,ios的库安装工具
1.需要ruby环境,mac pro自带了 2.终端输入:sudo gem install cocoapods
- 黑马MySQL数据库学习day02 表数据CRUD 约束CRUD
/* 基础查询练习: 1.字段列表查询 当查询全部字段时,一种简便方式,使用*代替全部字段(企业中不推荐使用) 2.去除重复行 DISTINCT,注意修饰的是行,也就是整个字段列表,而不是单个字段. ...
- java利用myeclipse自带三大框架搭建三大框架(Hibernate+Struts2+Spring)过程详解
搭建过程因人而异,我的搭建过程大致是这样的: 1.创建一个javaweb项目: 2.导入Spring框架,上图: 2.1: 2.2: 2.3: 3.导入struts2框架,上图: 3.1: 3.2: ...
- python连接redis数据库的两种方式
代码: # __author__ = 'STEVEN' import redis # 方式1,直接连接 # r = redis.Redis(host='192.168.43.22',port=6379 ...
- ZROI提高组模拟赛05总结
ZROI提高组模拟赛05总结 感觉是目前为止最简单的模拟赛了吧 但是依旧不尽人意... T1 有一半的人在30min前就A掉了 而我花了1h11min 就是一个简单的背包,我硬是转化了模型想了好久,生 ...
- HDU6308(2018多校第一场)
Bryce1010模板 http://acm.hdu.edu.cn/showproblem.php?pid=6308 将时间化简为分钟计算,同时不要用浮点数计算,精度会出现问题: 如果采用精度,最好加 ...
- matplotlib 学习笔记02:marker标记详解
本文内容来自于matplotlib官网:matplotlib官网markers资料 This module contains functions to handle markers. Used by ...
- 简单总结ConcurrentHashMap
一.HashTable hashTable是一个线程安全的容器,是线程安全版本的HashMap.但它的底层是和HashMap一样的,只是在方法上都加上了synchronized关键字. 这样子有什么后 ...
- Sawgger框架
简介详情:https://blog.csdn.net/sanyaoxu_2/article/details/80555328