UVA 156 反片语

UVA 156 反片语

题目描述

输入一些单词,找出所有满足如下条件的单词:该单词不能通过字母重排,得到输入文 本中的另外一个单词。在判断是否满足条件时,字母不分大小写,但在输出时应保留输入中 的大小写,按字典序进行排列(有大写字母在所有小写字母的前面)。

样例输入

ladder came tape soon leader acme RIDE lone Dreis peat ScAlE orb eye Rides dealer NotE derail LaCeS drIed noel dire Disk mace Rob dries #

样例输出

Disk NotE derail drIed eye ladder soon(为节约空间不予以换行)


知识补充:C++ map

  1. map map_name 可以称之为关联数组 sort1->sort2 的映射

  2. 常用方法insert find count remove


//insert

student.insert(pair(1,'female')); //利用pair变量删除

mapStudent[1] = "student_one"; //利用下标删除

mapStudent.insert(map::value_type (1, "student_one")); //利用insert函数

//erase

iterator erase(iterator it);//通过一个条目对象删除

iterator erase(iterator first,iterator last)//删除一个范围

size_type erase(const Key&key);//通过关键字删除

//size

n = mapStudent.size();

  1. 函数列表

begin()        返回指向map头部的迭代器



clear()        删除所有元素



count()        返回指定元素出现的次数



empty()        如果map为空则返回true



end()          返回指向map末尾的迭代器



equal_range()  返回特殊条目的迭代器对



erase()        删除一个元素



find()          查找一个元素



get_allocator() 返回map的配置器



insert()        插入元素



key_comp()      返回比较元素key的函数



lower_bound()  返回键值>=给定元素的第一个位置



max_size()      返回可以容纳的最大元素个数



rbegin()        返回一个指向map尾部的逆向迭代器



rend()          返回一个指向map头部的逆向迭代器



size()          返回map中元素的个数



swap()          交换两个map



upper_bound()    返回键值>给定元素的第一个位置



value_comp()    返回比较元素value的函数


代码实现


//摘自刘汝佳

#include

#include

#include

#include

#include

#include

using namespace std;

map cnt;

vector words;

string re(const string &s){

string ans s;

for(i=0;i>s){

if(s[0]=='#')

break;

words.push_back(s);

string r=re(s);

if(!cnt.count(r))

cnt[r]=0;

cnt[r]++;

}

vector ans;

for(i=0;i

by制杖菜鸡

你可能感兴趣的:(UVA 156 反片语)