从输入的电话号码中找出所有可能的单词

  • 本文关键字:有可能 单词 电话号码
  • 更新时间 :
  • 英文 :


我有个问题需要帮助。我希望我能得到一些更好的方法来处理我正在做的事情。我的主要问题是下面几行(//这是什么让我挂了),并在页面底部描述。

我需要排列一个电话号码的所有可能结果:(不只是字典中的单词)

即222 - 2222

应该输出一个3^7长的列表,包含a,b,c的所有可能的排列

AAAAAAA
AAAAAAB
AAAAAAC
AAAAABA   // THIS IS WHATS HANGING ME UP
AAAAABB
AAAAABC
AAAAACA   // HERE TOO AND SO ON

我的代码(为了测试特意缩短)给了我:

AAAA
AAAB
AAAC
AABC
AACC
ABCC
ACCC
BCCC
CCCC

我是一个初学编程的学生,所以我的知识可以使用for, while, if,语句和从数组中抓取单个字符。

下面是我的代码到目前为止的样子:(这是一个函数的一部分。代码丢失){
int d1=n[0]-48;
int d2=n[1]-48;
int d3=n[2]-48;
int d4=n[3]-48;
int d5=n[4]-48;
int d6=n[5]-48;
int d7=n[6]-48;
int a=0,b=0,c=0,d=0,e=0,f=0,g=0;
int i=0;
char charArray[10][4]={ {'0','0','0'},{'1','1','1'},{'A','B','C'},
        {'D','E','F'},{'G','H','I'},{'J','K','L'},{'M','N','O'},
        {'P','R','S'},{'T','U','V'},{'W','X','Y'}  };

while(i <=14){
    printf("%c%c%c%cn", charArray[d1][a],
            charArray[d2][b],charArray[d3][c],charArray[d4][d],
            charArray[d5][e],charArray[d6][f],charArray[d7][g]);
    g++;
    if(g==3){
        g=2;
        f++;
    }
    if(f==3){
        f=2;
        e++;
    }
    if(e==3){
        e=2;
        d++;
    }

我不是在找一个人为我做这件事,我只是需要一点帮助来弄清楚哪种类型的语句将工作b/c当你有一个数字得到CharArray[d-][a]位置[3]并将其重置为[0]它发送给你循环的不同部分。

由于charArray的值是常量,我建议将其作为全局变量,而不是在函数中声明它。此外,由于一些数字有4个字母,而另一些数字有3个字母,因此您可能需要考虑使用锯齿数组来表示它。

至于打印你可以从电话号码中得到的排列,我认为递归将是你的朋友。假设您可以将电话号码存储在一个int数组中,下面的代码应该可以工作:

public void printPermutations(int[] phoneNumber)
{
   printPermutations(phoneNumber, 0, String.Empty);
}
private void printPermutations(int[] phoneNumber, int index, string permutation)
{
   if(index >= phoneNumber.Length)
   {
       // If we've reached the end, print the number
       printf(permutation + "n");
   }
   else
   {
       // Otherwise, generate a permutation for each
       // character this digit can be
       int digit = phoneNumber[index];
       char[] chars = charArray[digit];
       for (int i = 0; i < chars.Length; i++)
       {
           printPermutations(phoneNumber, index+1, permutation + chars[i]);
       }
   }
}

相关内容

最新更新