gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 15:49:46 25 4
gpt4 key购买 nike

我有一个问题需要一些帮助来解决。我希望我能得到一些关于更好的方法来完成我正在做的事情的建议。我的主要问题是下面几行(//这就是困扰我的问题),并在页面底部进行了描述。

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

即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、语句以及从数组中获取单个字符。

到目前为止,我的代码如下所示:(这是函数的一部分。代码丢失)

char alphaFunc(char n[]){

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%c\n", 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++;
}

我并不是在寻找有人为我做这件事,我只是需要一点帮助来确定当你有一个数字到达 CharArray[d-][a] 位置时哪种语句可以工作 b/c [3] 并将其重置为 [0] 它会将您发送到循环的不同部分。 (希望这是有道理的)。

最佳答案

由于 charArray 的值是常量,我建议将其设为全局变量,而不是在函数中声明它。此外,由于某些数字有 4 个字母,而其他数字有 3 个字母,因此您可能需要考虑使用 jagged array来代表它。

就打印可以从电话号码获得的排列而言,我认为递归将成为您的 friend 。假设您可以将电话号码存储在 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]);
}
}
}

关于c - 从输入的电话号码中查找所有可能的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16115715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com