普通排列问题:设计一个递归算法,给出在n个元素{1,2,…,n}中,任选m个元素的排列(m<n)。
另一种思路:引入一个标志数组se,记录n个元素中是否参加排列的情况。
设已有i-1个数参加排列,perm (list, i)生成由第i个位置开始的以后的m-i+1个位置上的各种排列。
另一种思路:引入一个标志数组se,记录n个元素中是否参加排列的情况。
void perm (int list[], int i,int k)
{ for (int j=1; j<=n; j++)
if (!se[j]) {
se[j]=1;
if (i<m)
perm (list, i+1,k+1);
else
out (list);
se[j]=0;
}
}
perm (list, 1,1);
设已有i-1个数参加排列,perm (list, i)生成由第i个位置开始的以后的m-i+1个位置上的各种排列。