**號碼盤一般可以用於輸入字母,如2可以輸入a、b、c,等等。要求設計號碼所對應的所有組合。如5969872可以對應:jtmwtpa、jtmwtpb等。
這就相當於排列數,如5對應j、k、l,以j、k、l各自引出9對應的w、x、y、z這些數字的組合就構成一棵樹。
我們可以構建乙個二維陣列charc[10][10]=並將各個數字所能代表的字元總數記錄在另乙個陣列inttotal[10]=;用乙個陣列儲存**號碼位數int number[tellength];將數字目前所代表的字元在其所能代表的字符集中的位置用乙個陣列儲存起來:int answer[tellength],初始化為0;這個關鍵,遍歷中的核心。如answer[0]對應數字5,它如果是k,則answer[0]的值是1。最簡單的方法就是有多少個數字就套多少層迴圈。這樣**總是都得修改,還可以以每次從answer[n-1]開始訪問,讓answer[n-1]++,如果answer[n-1]超過它對應字母個數時,將其至0,並讓answer[n-2]++。以此類推,也可遍歷所有的可能值。或者用遞迴。
具體**如下:
while(true)else
電話號碼對應英語單詞
題目描述 實現 public class recursivesearch 0 0表示空字元 1 2 3 4 5 6 7 8 9 static int total 分別表示0 9所代表的字元的個數 public static void main string args 假設 號碼為234,number...
電話號碼對應的英語單詞
具體問題描述見 程式設計之美 3.2 號碼對應英語單詞,在本文中主要根據 程式設計之美 中的思想分別利用遞迴與非遞迴的思想實現了 號碼對應英語單詞的構造實現,主要考慮了排列樹的思想,利用遍歷樹中的每個葉子節點來實現所有單詞的集合。對應文中的查詢方法正如 程式設計之美 中介紹的方法一樣,主要根據構造的...
3 2 電話號碼對應英語單詞
原始問題如下 手機上面的數字鍵均對應了幾個字元,譬如2對應了a,b,c。問題是當輸入一段數字後,求出所有可能的字元組合 第一種方法 假設 號碼是n個數字,那麼就n個for迴圈。這方法果斷不好 第二個方法 include include using namespace std char c 10 10...