/*
41. 车厢调度 (限1 人完成)
问题描述:假设停在铁路调度站入口处的车厢序列的编号一次为1,2,3,4。设计一个程序,求出所有可能由此输出的长度为4的车厢序列。
*/
#include <stdio.h>
#include<stdlib.h>
int n = 0;
//交换两个数
void swap(int *a, int *b)
{
int m;
m = *a;
*a = *b;
*b = m;
}
//递归
void perm(FILE* fw,int list[], int k, int m)
{
int i;
if(k > m)
{
for(i = 0; i <= m; i++)
{
fprintf(fw,"%d ", list[i]);
printf("%d ", list[i]);
}
printf("
");
fprintf(fw,"
");
n++;
}
else
{
for(i = k; i <= m; i++)
{
swap(&list[k], &list[i]);
perm(fw,list, k + 1, m);
swap(&list[k], &list[i]);
}
}
}
int main()
{
FILE* fw=fopen("pailie.txt","wt");
int i;
int j=0;
//int list[100];
printf("请输入N:");
scanf("%d",&i);
int list[i];
for(j;j<i;j++)
{
list[j]=j+1; //0-i
}
perm(fw,list,0,i-1);
printf("total:%d
", n);
fprintf(fw,"total:%d
",n);
fclose(fw);
return 0;
}