/* 华科机试练手
* 回溯法解决 排列组合问题
* 1 : 全排列
* 2 :可重复全排列
* 3 : 不可重复的选择排序
* ……
*/
#include <stdlib.h>
#include <stdio.h>
int solution[100];
/* 可重复全排 */
int Perm(int a[], int n, int level)
{
int i;
static int sum = 0;
if(level == n)
{
sum++;
for(i=0; i<level; i++)
printf("%d\t",solution[i]);
printf("\n");
return;
}
for(i=0; i<n; i++)
{
if(1)
{
solution[level] = a[i];
Perm(a,n,level+1);
}
}
return sum;
}
/* 不可重复全排 */
int NoReptPerm(int a[], int n, int level)
{
int i,j,selected = 0;
static int sum = 0;
if(level == n)
{
sum++;
for(i=0; i<level; i++)
printf("%d\t",solution[i]);
printf("\n");
return;
}
for(i=0; i<n; i&#
回溯法解决 排列组合问题 全排 选排 可重复 不可重复
最新推荐文章于 2024-08-14 10:45:25 发布
该博客介绍了如何使用回溯法解决排列组合问题,包括全排列、可重复全排列以及不可重复的选择排序。通过C语言实现的示例代码展示了具体的算法逻辑,并在主函数中进行测试,输出了各种情况下的解的数量。
摘要由CSDN通过智能技术生成