设计一个递归算法,给出在n个元素{1,2,…,n}中,任选m个元素的排列(m

普通排列问题:设计一个递归算法,给出在n个元素{1,2,…,n}中,任选m个元素的排列(m另一种思路:引入一个标志数组se,记录n个元素中是否参加排列的情况。


void perm (int list[], int i,int k)
{for (int j=1; j<=n; j++)
if (!se[j]) {
se[j]=1;
if (iperm (list, i+1,k+1);
else
out (list);
se[j]=0;
}
}

perm (list, 1,1);



设已有i-1个数参加排列,perm (list, i)生成由第i个位置开始的以后的m-i+1个位置上的各种排列。

    推荐阅读