//开始傻×了 受题目形容的误导 一心想生成所有可能的 字符串组合 之后查找非常慢 //听了同学的 将5000个dict里的字符串 转换成char型数组(不能直接用int 会越界)直接用输入的数据对着转换后的数据查找就可以了 //现在的程序还是太复杂了 没有必要提前把dict中的字符串都存起来 取一个判断一个就好了 #include <iostream> #include <fstream> #include <vector> #include <algorithm> #include <cstring> using namespace std; typedef struct { char num[13]; char name[13]; }MYDICT; vector<MYDICT> dict; //vector<>中 最好不要用指针 因为vector对指针是不会复制的 如果之后用指针做了别的操作 vector里的值就都变了 int transName2Num(char * name, char * num) { int len = strlen(name); int i; int n; for(i = 0, n = 0; i < len; i++) { switch(name[i]) { case 'A': case 'B': case 'C': num[i] = '2';break; case 'D': case 'E': case 'F': num[i] = '3';break; case 'G': case 'H': case 'I': num[i] = '4';break; case 'J': case 'K': case 'L': num[i] = '5';break; case 'M': case 'N': case 'O': num[i] = '6';break; case 'P': case 'R': case 'S': num[i] = '7';break; case 'T': case 'U': case 'V': num[i] = '8';break; case 'W': case 'X': case 'Y': num[i] = '9';break; default: break; } } num[len] = '