字符串的排列
题目:输入一个字符串,打印该字符串的所有排列。
举例:输入字符串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; }
运行界面如下: