命令提示OJ Problem 566
来源:互联网 发布:甲骨文java培训骗局 编辑:程序博客网 时间:2024/06/05 05:49
命令提示
运行时限: 1000 ms 内存限制: 256 MB
总提交: 251次 通过: 57次
总提交: 251次 通过: 57次
题目描述
用过linux的shell的同学都知道,如果敲命令敲了一半,可以按Tab键进行自动补全(条件是已经敲的字符串是字典里的某个字符串前缀)。
当然如果有多个候选项,那么就不会补全。这种情况下,你多按几次,shell会把所有的候选项都显示出来。
现在要求简易模拟shell的补全,简便起见,只敲一个命令(没有空格隔开的多个命令之类的),并对它进行补全处理。
现在给你一个字典,和已经敲的命令,请输出候选项,没有候选项则输出null。
当然如果有多个候选项,那么就不会补全。这种情况下,你多按几次,shell会把所有的候选项都显示出来。
现在要求简易模拟shell的补全,简便起见,只敲一个命令(没有空格隔开的多个命令之类的),并对它进行补全处理。
现在给你一个字典,和已经敲的命令,请输出候选项,没有候选项则输出null。
程序输入说明
第一行包含一个正整数T (T<20)表示有多少组测试数据,每组测试数据第一行包括2个整数M,N(0<M,N<10000),分别代表字典大小,测试命令数。第二行包含M个以空格隔开的字符串(字符串长度 < 30),表示字典内容。第三行包括N个待补全的命令字符串,用空格隔开。
程序输出说明
每组测试数据输出:每个测试项的测试结果。
每个测试项一行,命令之间用空格隔开(按照字典序排序)。
具体格式参照样例。
每个测试项一行,命令之间用空格隔开(按照字典序排序)。
具体格式参照样例。
程序输入样例
可见格式带空格和换行符的格式带空格和换行符的格式说明
51 1aa1 1ac3 1ls ll lnl5 2abcde abcd abc ab aqwer abc5 2abce abcd abc ab aqwer abcd
程序输出样例
OriginalTransformed带空格和换行符的格式说明
Case 1:aCase 2:nullCase 3:ll ln lsCase 4:nullabc abcd abcdeCase 5:nullabcd
提示
无
题目来源
小兔齐齐
[统计数据] [提 交]
个人理解:
就是字符串匹配 但是都是在首位置就匹配
另外字典序用快排的时候
我直接用的指针
AC情况:
代码GCC C:
# include <stdio.h># include <string.h># define M 10000# define N 31int BF(char a[],char b[]);void Qsort(int L,int R);char A[M][N],B[M][N],*tt[M],*W;int main(){ int T,m,n,i,j,k,t=0,C[M]; //freopen("AAA.txt","r",stdin); scanf("%d",&T); while(T--) { scanf("%d %d",&m,&n); for(i=0;i<m;i++) { tt[i]=A[i]; scanf("%s",A[i]); } Qsort(0,m-1); printf("Case %d:\n",++t); for(i=0;i<n;i++) { scanf("%s",B[i]); for(k=j=0;j<m;j++) if(BF(tt[j],B[i])) C[k++]=j; if(!k)printf("null"); else { for(j=0;j<k-1;j++) printf("%s ",tt[C[j]]); printf("%s",tt[C[j]]); } printf("\n"); } } return 0;}int BF(char a[],char b[])//BF算法 a为主串,b为被检验的串{ int i=0,j=0; while (a[i]&&b[j]) if (a[i++]==b[j])++j; // 继续比较后继字 else (i-=j)&&(j=0); return !b[j]&&(i==j); } void Qsort(int L,int R)//快速排序 升序 { int i=L,j=R; char *temp=tt[L]; if(L>R) return; while(i!=j) //当数组左右两边没相遇 { while(strcmp(tt[j],temp)>=0&&i<j)j--; while(strcmp(tt[i],temp)<=0&&i<j)i++; if(i<j){ W=tt[i];tt[i]=tt[j];tt[j]=W;} } if(L!=i) { W=tt[i];tt[i]=tt[L];tt[L]=W;} Qsort(L,i-1); //递归左 Qsort(i+1,R); //递归右 }
阅读全文
0 0
- 命令提示OJ Problem 566
- OJ problem 1004
- OJ problem 1005
- OJ---3n+1 Problem
- Light oj 1070 - Algebraic Problem
- Tongji OJ Problem A - A
- 第十六周 OJ:Money Problem
- OJ 4之Maze Problem
- HDU-OJ Problem - 1042 N!
- A+B Problem && OJ推荐
- A+B Problem (sdut oj)
- Swust OJ 004 Maze Problem
- oj刷题 Problem J: 软件工程
- oj Problem C: 查找【数组】
- Fafu OJ A+B Problem
- OJ text1 A+B Problem
- HDU OJ 1001 Sum Problem
- OJ 上常见错误提示
- 如何解决MATLAB还有X天过期的问题
- 二维码解码器Zbar+VS2012开发环境配置
- 100. Same Tree
- Java虚拟机解析篇之 -- 内存模型
- CNN Net
- 命令提示OJ Problem 566
- 27. Remove Element
- Map与List查找性能比较
- Opencv+Zbar二维码识别(标准条形码/二维码识别)
- 所以为什么要学ps?
- AngularJS开发WebApp的路由配置
- Windows和linux下的查看网络命令
- PowerMock介绍
- Redis常用命令