电话号码对应英语单词

电话号码盘一般可以用于输入字母,如2可以输入A、B、C,等等。要求设计号码所对应的所有组合。如5969872可以对应:JTMWTPA、JTMWTPB等。

    这就相当于排列数,如5对应J、K、L,以J、K、L各自引出9对应的W、X、Y、Z这些数字的组合就构成一棵树。

    我们可以构建一个二维数组charc[10][10]={“”,“”,“ABC”···}并将各个数字所能代表的字符总数记录在另一个数组inttotal[10]={0,0,3,3···4};用一个数组存储电话号码位数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){

    //n为电话号码长度

    for(i =0;i<n;i++){

        printf(“%c”,c[number[i]][answer[i]]);

    }

    printf(“\n”);

    int k = n-1;

    while(k>=0){

        if(answer[k]<total[number[k]-1]){

            answer[k]++;

            break;

        }else{

            answer[k]= 0;k--;

        }

    }

    if(k<0)break;

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值