一开始没审题,直接用map,wa
后来看见字典序,没理解意思,又wa
后来才理解是输入的字典序。。
上去一发,tle
后来发现忘了break;
代码如下
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
char a[10005][16];
char temp[16];
int num=0,cnt=0;
while(scanf("%s",a[num])){
if(a[num][0]!='#') {
num++; continue;
}
num--;
break;
}
while(scanf("%s",temp)){
if(temp[0]!='#'){
int len=strlen(temp);
int flag=0; //0表示没找到;
for(int i=0;i<=num;i++){
int le=strlen(a[i]);
if(le==len) {
int num=0;
for(int j=0;j<len;j++){
if(a[i][j]==temp[j]) num++;
}
if(num==len) {
flag=1;
printf("%s is correct\n",temp);
break;
}
}
}
if(flag==1) continue;
printf("%s:",temp);
for(int i=0;i<=num;i++){
int le=strlen(a[i]);
if(le==len) {
int num=0;
for(int j=0;j<len;j++){
if(temp[j]==a[i][j]) num++;
}
if(num==len-1) printf(" %s",a[i]);
}
if(le==len-1){
int cnt=0;
for(int j=0;j<len;j++){
if(temp[j]==a[i][cnt]) cnt++;
}
if(cnt==le) printf(" %s",a[i]);
}
if(le==len+1){
int cnt=0;
for(int j=0;j<le;j++){
if(a[i][j]==temp[cnt]) {
cnt++;
}
}
if(cnt==len) printf(" %s",a[i]);
}
}
printf("\n"); continue;
}
break;
}
}