首页 > 代码库 > 递归 - 求数字/字符串的全排列
递归 - 求数字/字符串的全排列
例如:
字符串 abc,全排列为:abc,acb,bac,bca,cab,cba
数字 123,全排列为:123,132,213,231,312,321
代码:
#include <iostream> #include <string> #include <algorithm> using namespace std; int tally = 0; void swapChar(string & _data, int _i, int _j) { char c; c = _data[_i]; _data[_i] = _data[_j]; _data[_j] = c; } void F(string _data, int _n) { if(_n == _data.length() - 1) { tally++; cout << _data << endl; return; } for(int i = _n; i < _data.length(); i++) { swapChar(_data, i, _n); F(_data, _n + 1); swapChar(_data, i, _n); } } int main() { string data = "http://www.mamicode.com/ABC"; //string data = "http://www.mamicode.com/ABCDE"; F(data, 0); cout << endl << "count:" << tally; return 0; }
图示理解:
递归 - 求数字/字符串的全排列
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。