通常我们希望检查n个不同元素的所有排列方式以确定一个最佳的排列。比如,a,b,c的排列方式有: abc, acb, bac, bca, cab和cba. N个元素的排列方式共有n!种。
//生成list[k:m]的所有排列方式
void Perm(char list[], int k, int m)
{
int i;
if(k==m)
{
for(i=0;i<=m;i++)
{
printf("%c", list[i]);
printf("/n");
}
}
else
{
for(i=k;i<=m;i++)
{
swap(list+k, list+i);
Perm(list, k+1, m);
swap(list+k, list+i);
}
}
}
Ref:<<数据结构,算法与应用>> P7~P8