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;
}