EricYang

Tech Spot of Eric

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

题目:输入一个字符串,打印出该字符串中字符的所有排列。
例如输入字符串abc,则输出由字符a、b、c所能排列出来的所有字符串
abc、acb、bac、bca、cab和cba。

 

#include <iostream>
#include <string>
#include <cstring>

using namespace std;

bool isVisited[3];

void dfs(string str, string rlt, const int len, int cur)
{
    if(cur==len)
    {
        cout<<rlt<<endl;
        return ;
    }

    for(int i=0; i<=len-1; i++)
    {
        if(!isVisited[i])
        {
            rlt+=str[i];
            isVisited[i]=true;
            dfs(str,rlt,len,cur+1);
            rlt.erase(cur);
            isVisited[i]=false;
        }
    }
}

int main()
{
    string str="abc";
    string rlt="";

    memset(isVisited,0,sizeof(isVisited));

    dfs(str,rlt,3,0);

    return 0;
}

  

posted on 2012-05-04 10:56  Eric-Yang  阅读(175)  评论(0)    收藏  举报