hdu1113 Word Amalgamation(超详细解释--map和string的运用)

转载请注明出处:http://blog.csdn.net/u012860063天资

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1113

来吧!!欢迎"热爱编程"的同学报考杭电,期待你加入“杭电ACM集训队”!

7月22-8月21多校联合训练期间,会根据实际负载关闭部分模块,若有不便,请谅解~

Word Amalgamation

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 2496    Accepted Submission(s): 1198

Problem Description

In millions of newspapers across the United States there is a word game called Jumble. The object of this game is to solve a riddle, but in order to find the letters that appear in the answer it is necessary to unscramble four words. Your task is to write a
program that can unscramble words.

Input

The input contains four parts:

1. a dictionary, which consists of at least one and at most 100 words, one per line;

2. a line containing XXXXXX, which signals the end of the dictionary;

3. one or more scrambled `words‘ that you must unscramble, each on a line by itself; and

4. another line containing XXXXXX, which signals the end of the file.

All words, including both dictionary words and scrambled words, consist only of lowercase English letters and will be at least one and at most six characters long. (Note that the sentinel XXXXXX contains uppercase X‘s.) The dictionary is not necessarily in
sorted order, but each word in the dictionary is unique.

Output

For each scrambled word in the input, output an alphabetical list of all dictionary words that can be formed by rearranging the letters in the scrambled word. Each word in this list must appear on a line by itself. If the list is empty (because no dictionary
words can be formed), output the line ``NOT A VALID WORD" instead. In either case, output a line containing six asterisks to signal the end of the list.

Sample Input

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
******
NOT A VALID WORD
******
course
******

Source

Mid-Central USA 1998

Recommend

Eddy

题意:先给你一些单词作为字典,在给一系列的单词查找字典中是否有这些单词(注意查找的单词,一个单词中的字母顺序是可以变得,也就是说单词之间只要字母是一样的不用考虑顺序是否一样都要输出);

思路:用map和string变很容易解决,先把字典存入map里,在逐一查找就OK,当然查找的时候需要一点小小的操作,详见代码解释;

map的详细用法:http://blog.csdn.net/u012860063/article/details/24435211

代码如下(超级详细版):

#include <cstdio>
#include <map>
#include <string>
#include <iostream>
#include <algorithm>
using namespace std;

int main()
{
	map<string,string>m;//定义map的变量和值都为string类型
	string t, s;
	while(cin >> s)
	{
		if( s == "XXXXXX")
		{	//注:string类型的是可以直接在字符串之间用"="或"=="进行赋值或判断的
			break;
		}
		t = s;
		sort(s.begin(),s.end());//直接对string类型的字符串用begin()和end()进行排序
		m[t] = s;
	}
	while(cin >> s)
	{
		if( s == "XXXXXX")
		{
			break;
		}
		int flag = 0;//用于记录字典里是否有要查询的单词
		sort(s.begin(),s.end());//直接对string类型的字符串用begin()和end()进行排序
		map<string,string>::iterator it;
		for(it = m.begin(); it != m.end(); it++)
		{
			if(it->second == s)//it->second 为值,也就是map里第二个string的值
			{
				cout<<it->first<<endl;//it->first 为索引键值,也就是map里第一个string的值
				flag = 1;
			}
		}
		if(flag == 0)
		cout << "NOT A VALID WORD"<<endl; //和下面注释掉的等效
		cout << "******"<<endl;
	//	cout << "NOT A VALID WORD\n"<<;
	//	cout << "******\n"<<;
	}
	return 0;
}

hdu1113 Word Amalgamation(超详细解释--map和string的运用)

时间: 2024-10-13 23:25:52

hdu1113 Word Amalgamation(超详细解释--map和string的运用)的相关文章

HDU1113 Word Amalgamation

问题链接:HDU1113 Word Amalgamation. 这个问题是一个字典问题,自然用map来实现.问题在于还需要转个弯,不然会掉进陷阱里去的. 查字典问题,通常是单词按照字典顺序存放,然后将要查的单词拆成字母,按单词的字母顺序去查字典.然而要是这样做程序的逻辑就太零碎繁杂了. 于是,把单词中的字符排个顺序作为关键字,来查单词的话就方便了.需要注意的一点,不同的单词有可能具有相同的关键字. 这个程序的关键有容器类map的使用,算法库<algorithm>中函数sort()的使用. AC

DAPP超详细解释

一.DAPP到底是个什么玩意?DAPP是Decentralized Application的缩写,翻译过来就是去中心化应用,也称为分布式应用.它之所以被认为开启了区块链3.0时代,是因为DAPP与我们当前所认识到的APP不同,不同在哪里呢?它的特殊性当然不仅局限于多了脑袋"D",而在于它的后台,是区块链啊!按照区块链目前的热度,但凡和它扯上点关系的东西,都变得非常高级有木有.这里用一句非常直白的话来解释DAPP,那就是:把我们目前依靠IOS和Android系统开发的APP抓出来,扔在区

C#操作Word的超详细总结

本文中用C#来操作Word,包括: 创建Word: 插入文字,选择文字,编辑文字的字号.粗细.颜色.下划线等: 设置段落的首行缩进.行距: 设置页面页边距和纸张大小: 设置页眉.页码: 插入图片,设置图片宽高以及给图片添加标题: 插入表格,格式化表格,往表格中插入数据: 保存Word,打印Word: 重新打开Word等. Visual studio版本:Visual Studio 2012(2010应该也可以) 准备工作: /* 1. 添加引用COM里面的 Microsoft Word 12.0

PPTP电脑XP端设置超详细解释

华科自主研发将近两年的时间,打破了市面上PPTP方案,最前沿的技术方案,非市面泛滥的ROS技术方案.提高了稳定性和速度,带宽利用率达到最大化.pptp电脑端XP系统设置教程如下: 打开网络连接,创建一个新的链接第一步 第二步 第三步 第四步第五步第六步 具体参数设置如下图1,点击属性如图点击安全--高级具体设置如图即可2,修改模式为PPTP模式点击网络,修改×××类型如图即可 3,修改完毕后连接拨号即可 有任何疑问,可以联系 32592617 原文地址:http://blog.51cto.com

hdu 1113 Word Amalgamation (map)

# include <stdio.h> # include <string> # include <map> # include <iostream> # include <algorithm> using namespace std; int main() { string s,t; int flag; map<string,string>q; while(cin>>s&&s!="XXXXXX&

C++:C++11新特性超详细版(1)

前言: 虽然目前没有编译器能够完全实现C++11,但这并不意味着我们不需要了解,学习它.深入学习C++11,你会发现这根本就是一门新的语言,它解决了c++98中许多遗留下来的问题.早晚会有一天,C++11便会普及大部分编译器.因此,提早做些准备也是应该的. 在此我想做一个关于C++11的专题,将C++11的新特性进行一一讲解,以通俗易懂的语言及例子帮助读者入门C++11.本文便是C++11新特性超详细版系列文章的第一篇, 即C++:[C++11]新特性超详细版(1). 不过我要强调的是,这些文章

java的反射机制,看完这篇轻松应对高级框架(超详细总结)

导读:很多优秀的高级框架都是通过反射完成的,反射的重要性,由此可见一斑.反射机制可以使得程序更加灵活,只有学习好反射的基础语法,这样才能自己写出优秀的框架.好了一起打卡学习吧,别忘记了素质三连哦! 往期精彩回放:一文搞定Java的输入输出流等常见流 java多线程编程从入门到卓越(超详细总结) 一文搞定Java集合类,你还在为Java集合类而烦恼吗? 文章目录 1.反射机制概述 2.通过反射机制实例化对象 3.反射Field(属性)获取字节码 4.反射Mothod(方法) 5.反射Constru

Android自定义相机超详细讲解

Android自定义相机超详细讲解 转载请标明出处: http://blog.csdn.net/vinicolor/article/details/49642861: 由于网上关于Android自定义相机的文章写得不是太详细,Google官方的文档又说得不太容易理解,所以今天我来详细讲解一下Android自定义相机. 这篇文章主要写给一些刚刚接触Android的那些看官方API困难以及不太了解Android机制的同学们,所以熟练开发者可以绕道了. 最近在使用Camera类的时候发现居然被弃用了,

利用apache+svn+jenkins+maven 实现java环境的自动化构建和部署(五)(网内首发超详细版)

8 Subversion FAQ 8.1 官方FAQ网址 http://subversion.apache.org/faq.zh.html 8.2 svn遇到错误总结 8.2.1 svn不显示日志 解决办法:1)找到你SVN版本库下conf文件夹下的svnserve.conf文件2)打开svnserve.conf文件,将其中名为anon-access的一项设置为anon-access=none. 这样的话,日志文件即可显示正常. 8.2.2 版本冲突问题 svn update --usernam