需求
1:如题,比如说5 有5!种排列方式(12345)
如何求出所有的五位数字
2:C语言实现
#include
using namespace std;
int main()
{
int sum,a,b,c,d,e;sum=0;
for(int i=10000;i<100000;i++)
{
a=/10000
b=(i/1000)%100;
c=(i/100)%10;
d=(i/10)%10;
e=i%10;
if(a==5||b==5||c==5||d==5||e==5)
{printf(i);
}
}
}
int factorial(int N)
{
if (N == 1 || N == 0)
{
return 1;
}
return N * fac(N - 1); //使用了递归
}
这是要求出N的全排列?
#include <stdio.h>
void permutation(int k, int n, int a[])
{
//递归到底层
if(k == n-1)
{
for(int i = 0; i < n; i ++)
printf("%d-", a[i]);
printf("\n");
}
else
{
for(int i = k; i < n; i ++)
{
int temp = a[k];
a[k] = a[i];
a[i] = temp;
//交换后递归下一层
permutation(k+1, n, a);
//保证每一层递归后保持上一层的顺序
temp = a[k];
a[k] = a[i];
a[i] = temp;
}
}
}
int main()
{
int a[100];
int n,k;
printf("取n个不同的元素,n为:");
scanf_s("%d", &n);
printf("元素为(元素不能重复):");
for(int i = 0; i < n; i ++)
{
scanf_s("%d",&k);
a[i] = k;
}
permutation(0, n, a);
int ll;
scanf_s("%d",&ll);
return 0;
}
https://blog.csdn.net/eternitybubble/article/details/81059521