STL简单应用问题
问题:
Input
输入的第一行是一个整数T( 1 <= T <= 100 ),表示有几组输入数
据。
每组输入由4部分组成:
(1)一个字典,最多包含2000个单词,每个单词一行。
(2)一行字符串"XXXXXX",作为字典部分的结束标志。
(3)1个或多个( 最多2000个 )需要解读的字符串。每个一行。
(4) 一行字符串"XXXXXX",作为解读部分的结束标志。
以上的每个单词都只有小写字母组成,最长不超过10。字典不一定是有序的。单词是唯一的。
Output
每组输出中,对应每个解读串A,如果有一个串B和A由相同的字母组成,则认为B可以解读A。在字典中找到所有可以解读A的串,并且以字典顺序输出,每个单词一行,然后输出一行"******"。如果没有找到符合条件的单词串,就输出一行"NO ONE",然后输出一行"******"。
Sample Input
1
tarp
given
score
refund
only
trap
work
earn
course
pepper
part
XXXXXX
resco
nfudre
aptr
sett
oresuc
XXXXXX
Sample Output
score
******
refund
******
part
tarp
trap
******
NO ONE
******
course
******
回答:
方法一:
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include<map>
using namespace std;
#define M 2005
int a[M][26],b[26];
vector<string>Q;
void main()
{
int T;
scanf("%d",&T);
string str;
int flag;
int i,j,index;
while(T--)
{
Q.clear();
index=0;
while(cin>>str&&str!="XXXXXX")
{
Q.push_back(str);
index++;
}
sort(Q.begin(),Q.end());
for(i=0;i<index;i++)
{
for (j=0;j<26;j++)
a[i][j]=0;
for(j=0;j<Q[i].length();j++)
a[i][Q[i][j]-'a']++;
}
while(cin>>str&&str!="XXXXXX")
{
for(i=0;i<26;i++)
b[i]=0;
for(i=0;i<str.length();i++)
b[str[i]-'a']++;
flag=0;
for(i=0;i<index;i++)
{
for(j=0;j<26;j++)
{
if(a[i][j]!=b[j])
break;
}
if(j==26)
{
cout<<Q[i]<<endl;
flag=1;
}
}
if(!flag)
cout<<"NO ONE"<<endl;
cout<<"******"<<endl;
}
}
}
方法二:
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include<map>
using namespace std;
multimap<string,string>dic;
multimap<string,string>::iterator it,it2;
void main()
{
int T;
scanf("%d",&T);
string str;
int flag;
while(T--)
{
int sub=1;
dic.clear();
while(cin>>str&&str!="XXXXXX")
{
string temp=str;
sort(str.begin(),str.end());
//dic[str]=temp;
dic.insert(pair<string,string>(str,temp));
}
string rec[2000];
while(cin>>str&&str!="XXXXXX")
{
sort(str.begin(),str.end());
flag=0;
it=dic.find(str);
if(it==dic.end())
cout<<"NO ONE"<<endl;
else
{
int index=0;
for(it2=it;it2!=dic.end();it2++)
{
if((*it2).first!=str)
break;
else rec[index++]=(*it2).second;
}
sort(rec,rec+index);
for(int i=0;i<index;i++)
cout<<rec[i]<<endl;
//cout<<(*it2).second<<endl;
}
cout<<"******"<<endl;
}
}
}
STL简单应用问题的更多相关文章
- C++ STL 简单记录
1,STL提供三种类型的组件:容器.迭代器.算法. 容器: 顺序容器(vector.list.deque.string等)是一系列元素的有序集合: 关联容器(set.multiset.map.mult ...
- STL简单的介绍
我们要知道C++的含义:C语言 + 类 + 模板 (STL就是典型的代表) STL是Standard Template Library的简称,中文名是标准模库.从根本上说,STL是一些“容器”的集合 ...
- <<C++标准程序库>>中的STL简单学习笔记
0. 内容为个人学习笔记, 仅供参考, 如有错漏, 欢迎指正! 1. STL中的所有组件都是由模板构成的, 所以其元素可以是任意型别的. 组件有: - 容器: 管理某类对象的集合. 不同的容器有各自的 ...
- 复合词UVa10391(STL简单应用)
一.题目 输入一系列由小写字母组成的单词.输入已按照字典序排序(这句话就是个陷阱),且不超过120000个.找出所有的复合词,即恰好由两个单词连接而成的单词. 二.解题思路 要么枚举两两拼接的情况,O ...
- set STL 简单说说
set 这个容器,可以排序,以及去掉重复的东西 #include<bits/stdc++.h> using namespace std; int main() { string s; se ...
- C++stl简单使用
1 //1.sort函数排序 2 /* 3 #include <iostream> 4 #include <algorithm> 5 using namespace std; ...
- 标准模板库--STL
标准模板库STL 1.泛型程序设计 C++ 语言的核心优势之一就是便于软件的重用 C++中有两个方面体现重用: 1.面向对象的思想:继承和多态,标准类库 2.泛型程序设计(generic progra ...
- STL(常用)
STL 简单记录.讲解一些初级阶段常用的用法. STL是C++的一个标准模板库,其中包含了许多在计算机领域常用的基本数据结构以及基本算法.STL主要依赖于模板,使得STL具有广泛的通用性.这篇文章旨在 ...
- DFS系列 POJ(自认为的讲解)
C - Sum It Up POJ1564 题意: 给你一个N,然后给你一堆数The numbers in each list appear in nonincreasing order, and t ...
随机推荐
- POJ 1061 青蛙的约会【扩展欧几里德】
设跳的次数为t 根据题意可得以下公式:(x+mt)%L=(y+nt)%L 变形得 (x+mt)-(y+nt)=kL (n-m)t+kL=x-y 令a=(n-m),b=L,c=x-y 得 at+bk=c ...
- Apache轻量级性能测试工具
平时工作中会需要一些性能测试,简单的性能测试完全可以由AB来替代,而不需要动用LR这样重量级的工具. 此文简单介绍一下ab的工具使用与结果分析.当作个笔记,以便以后查阅. 1.安装:要使用AB,需要先 ...
- 判断一个值是否在数组里,可以检测数字,字符串,json对象
Array.prototype.indexOf = function (val) {//判断数组是否存在某个值,如果存在返回该值对应的索引,否则返回-1 for (var i = 0; i < ...
- window下查看TCP端口连接情况
window下查看TCP端口连接情况:netstat -ano -p tcp|findstr 10001
- Intellij IDEA 快捷键(Mac)
编辑 格式化代码 Alt+Command+L 大小写切换 Shift+Command+U 包围 Alt+Command+T 选中代码抽取方法 Alt+Command+M 调试/运行 查看 类关系视图 ...
- 1976 Queen数列
1976 Queen数列 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description 将1到N的整数数列(1 ...
- SSH公钥认证+优化
一 ssh公钥认证流程: sshclinet机器:产生公私钥(公钥相当于一把锁) sshclient:将公钥发给sshserver(抛出锁子) sshclinet去连sshserver不需要密钥 ...
- ls -F一种非常有用的ls格式
ls -F一种非常有用的ls格式 tz/y/yupeng > ls -F#q# News/ doc/ images/ mbox ...
- git流程及操作
一.git认识 git是什么?Git是目前世界上最先进的分布式版本控制系统 二.git安装 三.git创建本地库 1.首先选择e盘新建一个文件夹如douban 2.点击鼠标右键,执行Git Bash ...
- 深入理解abstract class和interface(转)
原文地址 深入理解abstract class和interface java提高篇(四)-----抽象类与接口