字母重排(字符串处理)
来源:互联网 发布:js导入导出excel数据 编辑:程序博客网 时间:2024/04/30 04:01
题目信息如下:
输入一个字典,(用******结尾),然后 再输入若干单词,每输入一个单词W,你都需要在字典中找到所有可以用W的字母重排后得到的单词,并按照字典序从小到大的顺序在一行中输出(如果不存在,输出:()。输入单词之间,用空格或空行隔开,切所有输入,且所有输入单词都由不超过6个小写字母组成。注意,字典中的单词不一定按字典序排列。
题意分析:
快速方法就是将字典先重排,然后在与输入的重排后的数据进行比较,快速简单,若寻找到相同的则输出,否则输出:(。
代码如下:(此解法详解析参考《算法竞赛入门》)
#include<stdio.h>#include<string.h>#include<stdlib.h>int n;char a[2020][10],s[2020][10];int cmp(const void *a,const void *b){return *(char *)a-*(char *)b;}int cmp1(const void *a,const void *b){char *c=(char *)a;char *d=(char *)b;return strcmp(c,d);}int main(){n=0;for(;;){scanf("%s",s[n]);if(s[n][0]=='*'){break;}n++;}qsort(s,n,sizeof(s[0]),cmp1);for(int i=0;i<n;i++){strcpy(a[i],s[i]);qsort(a[i],strlen(a[i]),sizeof(char),cmp);}char t[10];while(~scanf("%s",t)){qsort(t,strlen(t),sizeof(char),cmp);int found=0;for(int i=0;i<n;i++){if(strcmp(t,a[i])==0){printf("%s ",s[i]);found=1;}}if(!found)printf(":(");printf("\n");}return 0;}
0 0
- 字母重排(字符串处理)
- 字母重排
- 字母重排
- 字母重排
- 字母重排
- 字母重排
- 字母重排
- 字母重排
- 字母重排
- 字母重排
- 字母重排
- 字母重排
- 字母重排
- 字母重排
- 字母重排
- 字母重排
- 字母重排
- //字母重排
- 触发器详解
- 黑马程序员----常见面试题(复制)小试
- 再谈IPC之共享内存 (某公司实习生招聘笔试试题)
- 屏幕底角可关闭客服
- ORACLE SEQUENCE 详解
- 字母重排(字符串处理)
- 使用C语言读取bmp文件数据
- 我的Android笔记(十一)——使用Preference保存设置
- OpenCV 中结构体IplImage 成员width widthStep使用注意事项
- CRC校验实现原理以及程序实现研究
- 5.反射例子
- JSP学习 —— 开篇:JSP,servlet容器,Tomcat,servlet容器之间的关系
- 为什么在google源码中往往能看到使用 二进制数据
- 6. java基础学习总结1