电话号码对应英语单词

1.1递归

#include<stdio.h>


char c[10][10]=
{
    "",
    "",
    "abc",
    "def",
    "jkl",
    "mno",
    "pqrs",
    "tuv",
    "wxyz",
};
 
int total[10] = {0,0,3,3,3,3,3,4,3,4};
 
int number[4] = {3,2,3,4};
 
int answer[4] = {0};
 
void recursive(int * number, int * answer, int index, int n)
{
    int i;
    if(index == n)
    {
        for( i=0;i<n;i++)
            printf("%c", c[number[i]][answer[i]]);
        printf("\n");
        return;
    }
    for(answer[index]=0;answer[index]<total[number[index]];answer[index]++)
    {
        recursive(number, answer, index+1, n);
    }
}
 
int main()
{
    recursive(number, answer, 0, 4);
    getch();
    return 0;

}


1.2非递归

#include<stdio.h>

char c[10][10]=
{
    "",
    "",
    "abc",
    "def",
    "jkl",
    "mno",
    "pqrs",
    "tuv",
    "wxyz",
};
 
int total[10] = {0,0,3,3,3,3,3,4,3,4};
 
int number[3] = {3,4,5};
 
int answer[3] = {0};
 

 
int main()
{
    int i,k;
    int n=3;
    while(1)
    {
        for(i=0;i<n;++i)
            printf("%c",c[number[i]][answer[i]]);
        printf("\n");
        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;
    }
    getch();
    return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值