递归输出char数组的所有排列

来源:互联网 发布:centos安装intellij 编辑:程序博客网 时间:2024/05/19 14:51

递归输出char数组的所有排列

思路还是递归,如abc,所有排列6种(abc,acb,bac,bca,cab,cba),如果固定a,则bc只有两种排列(bc,cb),若又固定b,则只剩c只有一种排列c,这时候排列为abc;也就是对部分字符固定其位置不变,是其他字符进行排列,具体解法见如下个人编码

#include <iostream>using namespace std;/*** 将数组内的数据所有排列打印输出* 思路还是递归*/void printRes(char a[],int ac){    for(int i = 0; i < ac; i++){        cout<<a[i];    }    cout<<endl;}void listAll(char a[],int ac ,int n,int m){    if(n == m){        printRes(a,ac);    }else{        for(int i = n; i <= m; i++){            swap(a[n],a[i]);            listAll(a,ac,n+1,m);            swap(a[n],a[i]);        }    }}int main(){    int a=1,b=2;    swap(a,b);    cout<<a<<' '<<b<<endl;    char c[7] = {'a','b','c','d','e','f','g'};    listAll(c,7,0,6);    cout << "Hello world!" << endl;    return 0;}

不只是char数组,也改成其他类型的,或者使用c++模板
个人github

0 0
原创粉丝点击