递归生成排列

来源:互联网 发布:ubuntu 合上盖子 黑屏 编辑:程序博客网 时间:2024/05/19 22:58

写一个简单的小程序递归生成a、b、c 的排列组合


#include<iostream.h>typedef char Type;void Perm(Type a[], int k, int n);void main(){Type array[3]={'a','b','c'};Perm(array,0,2);}void Perm(Type a[], int k, int n){if (k==n) {//输出排列for (int i=0; i<=n; i++) cout << a[i]<<" ";cout << endl;}else//a[k:n]中包含多个排列,递归生产这些排列for (int i=k; i<=n; i++) { Type t = a[k]; a[k] = a[i]; a[i]=t; Perm(a, k+1, n); //a[k+1:n]的所有排列 t = a[k]; a[k] = a[i]; a[i] = t;}}

参考文献:《计算机算法(C++语言描述)》第2版 霍罗维兹 (Ellis Horowitz)

0 0