内容: 求N个数字可以组成多少个不同的数
例子:012这个三个数字可以组成:01,02,012,021,102,120,210,201
思路:
对每一位可能出现的情况进行递归,同时注意处理0开头的数字
代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void print(char * p)
{
int isbegin = 0;
for (int i = 0; i < strlen(p); i++)
{
if (!isbegin && p[i] != '0')
{
isbegin = 1;
}
if (isbegin)
{
printf("%c", p[i]);
}
}
printf("\n");
}
void print_main(char a[], int len, int index)
{
if (index == len - 1)
{
print(a);
return;
}
for (int i = 0; i < 10; i++)
{
a[index + 1] = i + '0';
print_main(a, len, index + 1);
}
}
void print_str(int len)
{
if (len <= 0)
{
printf("please input the number that is > 0\n");
return ;
}
char * data = (char *)malloc(len + 1);
data[len] = '\0';
for (int i = 0; i < 10; i++)
{
data[0] = '0' + i;
print_main(data, len, 0);
}
return ;
}
int main()
{
print_str(2);
}