问答题 已知有n个元素存放在向量S[1.n]中,其值各不相同,请写一递归算法,生成并输出n个元素的全排列。【中国科学技术大学1992十三(20分)】【苏州大学2005五(15分)】
【正确答案】正确答案:n个元素的全排列有n!种。因n!=n*(n—1)!,而(n一1)!=(n一1)*(n一2)!,故对n个元素,可放到n个不同位置上,让第一个位置依次取每一个元素,共n种取法,对其后的n一1个位置上的n一1个元素共有(n一1)!种不同排列,以此类推,直至第n个位置,将最后一个元素放在此位置上。利用数组S[n]保存1~n之间的n个自然数,从i=0到i=n一1,每次使S[0]同S[i]交换(i=0,1,2,…,n—1)后,对s[1]一S[n一1]中的n一1个元素进行全排列,然后再交换其值,使它恢复为此次排列前的状态。 void Permute(int S[],int j,int n)//s[j]~s[n一1]的n—J个元素进行全排列,初始j=0 {int i,temp; if(j=n-1) {for(i=0;i
【答案解析】