一個字母只對應一個數字,從字典中讀入一個單詞,把它轉化成唯一對應的數字,看它是否與給出的數字匹配,時間規模是5000*12=6e4,空間規模是常數,而且編程復雜度較低.
一開始,我把對應的數字設為int,後來發現,溢出了,囧。改成string字符數組就好了
/* ID:twd30651 PROG:namenum LANG:C++ */ #include#include #include #include using namespace std; // 2: A,B,C 5: J,K,L 8: T,U,V // 3: D,E,F 6: M,N,O 9: W,X,Y // 4: G,H,I 7: P,R,S // a b c d e f g h i j k l m n o p q r s t u v w x y int m[]={2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,7,8,8,8,9,9,9}; typedef struct node { char name[20]; string num; }node; node names[5000]; int nl; void generate() { for(int i=0;i >NUM; nl=i; generate(); int flag=0; for(int i=0;i