2019/2/20训练日记+map/multi map浅谈
Most crossword puzzle fans are used to anagrams — groups of words with the same letters in different
orders — for example OPTS, SPOT, STOP, POTS and POST. Some words however do not have this
attribute, no matter how you rearrange their letters, you cannot form another word. Such words are
called ananagrams, an example is QUIZ.
Obviously such definitions depend on the domain within which we are working; you might think
that ATHENE is an ananagram, whereas any chemist would quickly produce ETHANE. One possible
domain would be the entire English language, but this could lead to some problems. One could restrict
the domain to, say, Music, in which case SCALE becomes a relative ananagram (LACES is not in the
same domain) but NOTE is not since it can produce TONE.
Write a program that will read in the dictionary of a restricted domain and determine the relative
ananagrams. Note that single letter words are, ipso facto, relative ananagrams since they cannot be
“rearranged” at all. The dictionary will contain no more than 1000 words.
Input
Input will consist of a series of lines. No line will be more than 80 characters long, but may contain any
number of words. Words consist of up to 20 upper and/or lower case letters, and will not be broken
across lines. Spaces may appear freely around words, and at least one space separates multiple words
on the same line. Note that words that contain the same letters but of differing case are considered to
be anagrams of each other, thus ‘tIeD’ and ‘EdiT’ are anagrams. The file will be terminated by a line
consisting of a single ‘#’.
Output
Output will consist of a series of lines. Each line will consist of a single word that is a relative ananagram
in the input dictionary. Words must be output in lexicographic (case-sensitive) order. There will always
be at least one relative ananagram.
Sample Input
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
Sample Output
Disk
NotE
derail
drIed
eye
ladder
soon
关于昨晚的题,按昨天的思路写出来下面的代码,写一个比较函数,就能出结果,但是这毕竟是STL训练,而且当数据量上去的时候,这样的写法绝对会超时,数组绝对盛不下。
#include<cmath>
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<vector>
#include<set>
#include<cstring>
using namespace std;
int Count=0;
struct abc
{
string a;
string b;
};
void zh(string m,string &n);
int main()
{
abc x[2000];
while(cin>>x[Count].a)
{
cin>>x[Count].a;
if(x[Count].a=="#") break;
zh(x[Count].a,x[Count].b);
Count++;
}
}
void zh(string m,string &n)
{
char q[30];
memset(q,0,sizeof(char)*30);
for(int i=0;i<m.length();i++)
{
q[i]=m[i];
q[i]=tolower(q[i]);
}
sort(q,q+m.size());
n=q;
}
所以悬崖勒马,赶紧选用其它容器。
map/multimap
map/multimap映射容器的元素数据是由一个Key和一个Value成的,key与映照value之间具有一一映照的关系。
map/multimap容器的数据结构也采用红黑树来实现的,map插入元素的键值不允许重复,类似multiset,multimap的key可以重复。比较函数只对元素的key进行比较,元素的各项数据只能通过key检索出来。虽然map与set采用的都是红黑树的结构,但跟set的区别主要是set的一个键值和一个映射数据相等,Key=Value。
map<first,second> a;
//map,会按照first(键值)排序(查找也是);
map/multimap用法
头文件
#include< map >
map成员函数
begin() //返回指向 map 头部的迭代器
clear() // 删除所有元素
count() //返回指定元素出现的次数
empty() // 如果 map 为空则返回 true
end() //返回指向 map 末尾的迭代器
erase() // 删除一个元素
find() // 查找一个元素
insert() //插入元素
key_comp() //返回比较元素 key 的函数
lower_bound() //返回键值>=给定元素的第一个位置
max_size() //返回可以容纳的最大元素个数
rbegin() //返回一个指向 map 尾部的逆向迭代器
rend() //返回一个指向 map 头部的逆向迭代器
size() //返回 map 中元素的个数
swap() //交换两个 map
upper_bound() //返回键值>给定元素的第一个位置
value_comp() //返回比较元素 value 的函数
创建map对象
#include<iostream>
#include<map>
using namespace std;
map<int,char>mp;//定义map容器
创建结构体map对象
struct student{
int birth;
string name;
};
int id;
typedef map<int,student> Student;//本语句后所有语句Student==map<int,student>
插入结构体对象
接上文代码
Stduent a;
cin>>id>>student.birth>>student.name;
a.insert(make_pair(id,student);
通过map容器使得上述解题方式更简便。
2019/2/20训练日记+map/multi map浅谈的更多相关文章
- 2019.06.18训练日记(赞FLS)
之前打了几场比赛,有很多题没做出来,这些题无论是知识点不会,还是说在当时时间和思路的影响下没有做出来,这都应该做出来,至少现在必须做出来,本来打算专心复习,分数高了,好保研,但是想了想如果局限于只把学 ...
- LinkedHashSet、Map、Map接口HashMap、Hashtable,TreeSet、TreeMap、如何选择使用集合实现类,Collections工具类
一.Set接口实现类LinkedHashSet 实现继承图: 1.LinkedHashSet的全面说明 1) LinkedHashSet是 HashSet的子类 2) LinkedHashSet底层是 ...
- 浅谈Java中的Set、List、Map的区别(转)
对JAVA的集合的理解是想对于数组: 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),JAVA集合可以存储和操作数目不固定的一组数据. 所有的JAVA集合都位于 java ...
- Map生成器 map适配器如今能够使用各种不同的Generator,iterator和常量值的组合来填充Map初始化对象
Map生成器 map适配器如今能够使用各种不同的Generator,iterator和常量值的组合来填充Map初始化对象 package org.rui.collection2.map; /** * ...
- 图像的影像地图超链接,<map>标签浅谈
在HTML中还可以把图片划分成多个热点区域,每一个热点域链接到不同网页的资源.这种效果的实质是把一幅图片划分为不同的热点区域,再让不同的区域进行超链接.这就是影像地图.要完成地图区域超链接要用到三种标 ...
- java中遍历MAP,嵌套map的几种方法
java中遍历MAP的几种方法 Map<String,String> map=new HashMap<String,String>(); map.put("us ...
- arm-none-eabi-g++ -Xlinker -T "../LF3Kmonitor.ld" -Xlinker -Map="Bogota_ICT_V.map"-ram-hosted.ld -mc
1.arm-none-eabi-g++:是编译ARM裸板用的编译器,不依赖于操作系统. 2.-Xlinker -T "../LF3Kmonitor.ld" -Xlinker -Ma ...
- Map接口----Map中嵌套Map
package cn.good.com; import java.util.HashMap; import java.util.Iterator; import java.util.Map; impo ...
- 03-封装BeanUtil工具类(javabean转map和map转javabean对象)
package com.oa.test; import java.beans.BeanInfo; import java.beans.IntrospectionException; import ja ...
随机推荐
- kali2016&2019的安装使用
先解释一下,为什么要说2016&2019哪,这是因为有一些测试靶机环境在2016以上的系统安装不通过,所以有时候会特意找2016的镜像来用. 一.下载镜像 1.下载镜像当然要到官方去下载了: ...
- C++ stringstream(强制类型转换)
#include <iostream>#include <string>#include <sstream>using namespace std;int main ...
- String 对象-->概念和创建
1.String 对象 String 对象用于处理文本(字符串). String 对象创建方法: new String(). 语法: var txt = new String("string ...
- "图片组件"组件:<pic> —— 快应用组件库H-UI
 <import name="pic" src="../Common/ui/h-ui/media/c_pic"></import> & ...
- "段落"组件:<p> —— 快应用组件库H-UI
 <import name="p" src="../Common/ui/h-ui/text/c_p"></import> <te ...
- hadoop(十)hdfs上传删除文件(完全分布式七)|12
集群测试 上传小文件到集群,随便选择一个小文件上传到hdfs的根目录 [shaozhiqi@hadoop102 hadoop-3.1.2]$ bin/hdfs dfs -put wcinput/wc. ...
- Powershell追踪路由
一般情况下,我们可以通过Cmdlet命令来实现路由追踪 我们是否能尝试通过Powershell完成此功能呢? 脚本具体如下,可以直接粘贴 function GetTraceRoute($hostnam ...
- node实现防盗链
什么是防盗链 盗链,顾名思义就是盗窃链接,就是在他人未经允许的情况下,去使用他人站点的任何图片,视频,内容等资源,来借此提升已用的站点的活跃度,严重损坏了别人的利益.那么防盗链就是采用一些办法阻止自己 ...
- pgsql的使用
Deepin上面pgsql的启动 service postgresql start 停止 service postgresql stop 查看pgsql的版本 psql --version
- shell map数据结构的实现
前言 Bash默认不支持二维数组,如果我们想实现map 数据结构,可以安装如下的方式来进行构造 预备知识 eval: 它是shell内建命令,用于字符串的解析.它会首先扫描命令行 ...