字符串的排列

题目:输入一个字符串,打印该字符串的所有排列。

举例:输入字符串abc,则输出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。

答:

#include "stdafx.h"
#include <iostream>

using namespace std;

//交换两个数
void swap(char &a, char &b)
{
    char tmp = a;
    a= b;
    b = tmp;
}

//获取数组a的全排列
void GetAllRange(char *a, int size, int c)
{
    if (size == c)
    {
        for (int i = 0; i < size; i++)
        {
            cout<<a[i]<<" ";
        }
        cout<<endl;
    }
    else
    {
        for (int i = c; i < size; i++)
        {
            swap(a[i], a[c]);
            GetAllRange(a, size, c + 1);
            swap(a[c], a[i]);
        }
    }
}

int _tmain(int argc, _TCHAR* argv[])
{
    char arr[] = {'a', 'b', 'c'};
    GetAllRange(arr, 3, 0);

    cout<<endl;
    return 0;
}

运行界面如下:

posted @ 2012-08-29 19:50  venow  阅读(237)  评论(0编辑  收藏  举报