《剑指Offer》面试题28:字符串的排列

来源:互联网 发布:岛国中文字幕下载软件 编辑:程序博客网 时间:2024/05/22 03:20

《剑指Offer》 P154

面试题28:字符串的排列

题目

解答

//面试题28:字符串的全排列#include <string>#include <iostream>#include <Windows.h>using namespace std;void permutation(string s,int start,int &num){    if (start == s.size() - 1)        cout << num++ << '\t' << s << endl;    else    {        for (int i = start; i < s.size(); i++)        {            int temp = s[start];            s[start] = s[i];            s[i] = temp;            permutation(s, start + 1, num);            temp = s[start];            s[start] = s[i];            s[i] = temp;        }    }}//排列void permutation(string s){    if (s.empty())        return;    int num = 0;    permutation(s, 0, num);}void combination(string s, int n, int start, string &rlt,int &num){    if (n > s.size() - start)        return;    if (n == 0)    {        cout << num++ << '\t' << rlt << endl;    }    else    {        string rlt1 = rlt;        rlt1 += s[start];        combination(s, n - 1, start + 1, rlt1, num);        combination(s, n, start + 1, rlt, num);    }}//组合void combination(string s, int n){    if (n > s.size())        return;    string rlt;    int num = 0;    combination(s, n, 0, rlt, num);}int main(){    string s = "123456";    permutation(s);    cout << endl;    combination(s, 3);    system("pause");}
0 0
原创粉丝点击