POJ 3096 surprising_string (coding with STL <map> )
来源:互联网 发布:中国女性数据库 编辑:程序博客网 时间:2024/05/29 16:44
[Description]:
The D-pairs of a string of letters are the ordered pairs of letters that are distance D from each other. A string is D-unique if all of its D-pairs are different. A string is surprising if it is D-unique for every possible distance D.
Consider the string ZGBG. Its 0-pairs are ZG, GB, and BG. Since these three pairs are all different, ZGBG is 0-unique. Similarly, the 1-pairs of ZGBG are ZB and GG, and since these two pairs are different, ZGBG is 1-unique. Finally, the only 2-pair of ZGBG is ZG, so ZGBG is 2-unique. Thus ZGBG is surprising. (Note that the fact that ZG is both a 0-pair and a 2-pair of ZGBG is irrelevant, because 0 and 2 are different distances.)
Acknowledgement: This problem is inspired by the "Puzzling Adventures" column in the December 2003 issue of Scientific American.
[Input]:
The input consists of one or more nonempty strings of at most 79 uppercase letters, each string on a line by itself, followed by a line containing only an asterisk that signals the end of the input.
[Output]:
For each string of letters, output whether or not it is surprising using the exact output format shown below.
[Sample Input]:
ZGBGXEEAABAABAAABBBCBABCC*
[Sample Output]:
ZGBG is surprising.X is surprising.EE is surprising.AAB is surprising.AABA is surprising.AABB is NOT surprising.BCBABCC is NOT surprising解题思想:从要求来看,即定义D-pairs表示取字符串s中相距为D的两个字母所构成的字母对,该字母对中两个字母的位置顺序与他们在主串s中的位置顺序一致定义D-unique表示,若从字符串s中取出所有相距为D的字母对D-pairs,且这些D-pairs都是独一无二的,那么成字符串s是一个D-unique串D的取值范围为0~s.len()-2。然后这个用map的键值对来标记结果检测时更为方便。当然C的flag标记方式也可以,总的来说在大神看来是道简单的poj题目。
souce_code:
/* * ===================================================================================== * * Filename: surprising_string.cpp * Version: 1.0 * Created: 2013年10月13日 19时13分54秒 * Revision: none * Compiler: g++ * Author: szm * * ===================================================================================== */#include <iostream>#include <string>#include <map>int main(int argc, char *argv[]){std::string s;while(std::getline(std::cin,s) && (s.c_str())[0]!='*'){if(s.size()<=2){std::cout<<s.c_str()<<" is surprising."<<std::endl;continue;}bool flag_final=true;for(int i=0;i<=(s.size()-2);i++){std::map<std::string,bool> mark;bool flag_unique=true;for(int j=0;j<=(s.size()-i-2);j++){char m_pair[3]={(s.c_str())[j],(s.c_str())[j+1+i],'\0'};std::string str(m_pair);if(!mark[str]) mark[str]=true;else{flag_unique=false;break;}}if(!flag_unique){flag_final=false;break;}mark.clear();}if(flag_final) std::cout<<s<<" is surprising !"<<std::endl;else std::cout<<s<<" is not surprising !"<<std::endl;}return 0;}
- POJ 3096 surprising_string (coding with STL <map> )
- poj 3096 (STL map)
- POJ 3096 Surprising Strings(STL map)
- poj 1002 stl map
- POJ—2153(STL<map>)
- POJ 2503 (STL map)
- POJ 2503 Babelfish(STL-map)
- STL like template based coding with the MMX/SSE extension
- POJ训练计划3096_Surprising Strings(STL/map)
- poj 3096 Surprising Strings(stl map的使用)
- [poj 3481]Double Queue[set || map][STL]
- POJ 2643 Election ——STL map
- poj 3481 Double Queue(使用STL map)
- poj 2418 Hardwood Species(使用STL map)
- poj 1002 487-3279(使用STL map)
- poj 2503 Babelfish(STL map写法)
- POJ 3087 - STL(map)+滚动数组
- POJ 2503 Babelfish STL-map容器
- jQuery Ajax事件-ajaxSuccess(callback)
- 【LeetCode】Minimum Path Sum
- 串口通讯编程一日通1(整合资料)
- [人人] 求BST的中序后继节点
- 微信公众平台开发__导航
- POJ 3096 surprising_string (coding with STL <map> )
- 后缀数组练习题若干
- sublime修改字体的方法
- Access2003中文版应用基础教程(奋斗的小鸟)_PDF 电子书
- 串口通讯编程一日通4(串口基本操作)
- FragmentStatePagerAdapter
- poj 3694 Network
- php面向对象学习
- VS2010工程 fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏 解决办法