UVA 156 Ananagrams
来源:互联网 发布:出世之心入世之事 知乎 编辑:程序博客网 时间:2024/06/06 05:05
题目链接: 点击打开链接
题目大意:
给出一段英文,不区分大小写,找出其中不能通过重排得到短文中其它任何一个单词的单词。
解题思路:
现将每个单词大小写转化为一致的,之后将其排序,运用map函数映射寻找其中只出现一次的单词,输出原本单词。
代码:
#include<iostream>#include<string.h>#include<map>#include<algorithm>using namespace std;typedef struct stu{char s[1010];char s2[1010];}st;int cmp1(st a,st b){return strcmp(a.s2,b.s2)<0;}int cmp(char a,char b){return a<b;}st s1[1010];int b[1010];int main(){int i,j,k,m,n;map<string,int> st;i=0;memset(b,0,sizeof(b));while(scanf("%s",s1[i].s)){ if(s1[i].s[0]=='#') break; strcpy(s1[i].s2,s1[i].s); k=strlen(s1[i].s); for(j=0;s1[i].s[j]!='\0';j++) if(isupper(s1[i].s[j])) s1[i].s[j]+=32; sort(s1[i].s,s1[i].s+k,cmp); if(!st[s1[i].s]) st[s1[i].s]=i; b[st[s1[i].s]]++; i++;}sort(s1,s1+i,cmp1);for(j=0;j<i;j++){ if(b[st[s1[j].s]]==1) printf("%s\n",s1[j].s2);}return 0;}
一道不错的题目,主要用到stl中的map函数映射,用起来很方便。map函数用起来很方便,需要添加头文件#include<map>,之后定义map<string,int> a;之后a就相当于一个二位字符串,每一个字符串都可以对应一个整数,即a["hello"]=7;当你不对其字符串赋值时,函数自动赋值为零。
阅读全文
0 0
- UVa 156 - Ananagrams
- uva 156 Ananagrams
- UVA 156 - Ananagrams
- UVA 156 - Ananagrams
- UVa 156 - Ananagrams
- uva 156 - Ananagrams
- uva- 156-Ananagrams
- UVa 156 - Ananagrams
- UVA 156 - Ananagrams
- UVa 156 - Ananagrams
- UVa 156 - Ananagrams
- UVA 156 Ananagrams
- uva 156 - Ananagrams
- UVa - 156 - Ananagrams
- uva 156 Ananagrams
- UVa 156 - Ananagrams
- UVA - 156 - Ananagrams
- Uva:156 - Ananagrams
- Java基础零碎知识点(一)
- Android流媒体开发-客户端
- 关于Floyd算法三层循环顺序问题
- linux性能数据检测工具nmon的安装及使用
- Volley的原理解析
- UVA 156 Ananagrams
- 主席树区间修改模板
- 安卓常用工具类-ControlsUtils【设备、尺寸相关的工具类】
- JAX-WS规范(SOAP)的CXF开发客户端运行报错
- typedef
- Java 练习英文语句首字母变大写
- Ubuntu16.04终端执行`sudo apt-get update`遇到appstream问题
- ~第七章:类型与语句
- 10.11-10.20总结 1701H4