概述
算法竞赛入门经典(第2版) 第5章C++与STL入门
例题5-4反片语 UVa156
感悟。
1、从网站下载英文原题,重点在看输入输出数据与格式。
2、结合书中中文,英文原题能很快读懂。
3、在搭建输入输出框架中,对string进一步熟悉,该英文原题PDF文件中无法复制输入数据,网上找了一通,保留如下:
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 #
4、找了http://www.cnblogs.com/anywei/archive/2011/10/27/2226830.html介绍map比较详细的博客进行学习。
5、查着资料,硬着头皮用map写了一遍,竟然样例通过,太方便了,几乎不要做什么事,map中已自动做好,上http://vjudge.net提交AC,上https://uva.onlinejudge.org/继续提交AC,看看时间2016-11-16
6、开始看书中的解答,费了点劲,看懂了,感觉本人代码写得还不错,没有绕来绕去。
7、书中需要新学习的函数,map count
8、附上AC代码,编译环境Dev-C++4.9.9.2
#include <cstdio>
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main(){
string str;
int slen;
string stmp;
int i,j;
char ctmp;
map<string,string> strmap;
map<string,string>::iterator it,itj;
int flag;
while(cin>>str){
if(str=="#")
break;
slen=str.length();
stmp=str;//字符串复制(拷贝)
for(i=0;i<slen;i++){//字符串转小写
if(stmp[i]>='A'&&stmp[i]<='Z')
stmp[i]='a'+stmp[i]-'A';
}
for(i=0;i<slen;i++){//冒泡排序,自小到大
for(j=i+1;j<slen;j++){
if(stmp[i]>stmp[j]){
ctmp=stmp[i];
stmp[i]=stmp[j];
stmp[j]=ctmp;
}
}
}
strmap[str]=stmp;
//cout<<str<<" "<<stmp<<endl;
}
//遍历map
for(it=strmap.begin();it!=strmap.end();it++){
flag=0;
for(itj=strmap.begin();itj!=strmap.end();itj++){
if(it->first!=itj->first&&it->second==itj->second){
flag=1;
}
}
if(flag==0){
cout<<it->first<<endl;
}
}
return 0;
}
最后
以上就是能干海燕为你收集整理的例题5-4 反片语 UVa156的全部内容,希望文章能够帮你解决例题5-4 反片语 UVa156所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复