全排列的递归算法C++(带截图)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
全排列的递归算法
全排列的递归算法:10个数的全排列
代码:
#include
int n = 0;
void swap(int *a, int *b)
{
int m;
m = *a;
*a = *b;
*b = m;
}
void perm(int list[], int k, int m)
{
int i;
if(k > m)
{
for(i = 0; i <= m; i++)
printf("%d ", list[i]);
printf("\n");
n++;
}
else
{
for(i = k; i <= m; i++)
{
swap(&list[k], &list[i]);
perm(list, k + 1, m);
swap(&list[k], &list[i]);
}
}
}
int main()
{
int list[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
perm(list, 0, 9);
printf("total:%d\n", n);
return 0;
}
说明:
本程序是10个数字1,2,3,4,5,6,7,8,9,10的全排列递归算法,主要想看一下十个数字的递归算法执行时间如何,程序结果证明,速度较慢,需要时间较长。程序截屏如下: