全排列 利用template的时候,用cout打印不需要考虑变量的类型,这点比printf好用

来源:互联网 发布:windows mobile软件 编辑:程序博客网 时间:2024/06/07 10:09
#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<cstdlib>using namespace std;//全排列, 确定好第一个数后,对后面的数据进行全排列,然后一次交换第一个数据与后面每一个数据的位置,递归的形式进行全排列template<class T>void Swap(T &a, T&b) {    T temp;    temp = a;    a = b;    b = temp;}template<class T>void perm(T list[], int k, int m) {    if(k == m) {        for(int i=0; i<=m; i++)            //printf("%d ", list[i]);            cout<<list[i];  //第一次发现cout比printf好用,打印的时候不需要考虑数据的类型        cout<<endl;    }    else {        for(int i=k; i<=m; i++) {            Swap(list[k], list[i]);            perm(list, k+1, m);            Swap(list[k], list[i]);        }    }}int main(){    int list[3] = {1, 2, 3};    char list1[3] = {'a', 'b', 'c'};    perm(list1, 0, 2);    perm(list, 0, 2);    return 0;}

原创粉丝点击