麦兜

27851 分类: 算法

全排列

【题目描述】

给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列。

我们假设对于小写字母有‘a’ <‘b’ < ... <‘y’<‘z’,而且给定的字符串中的字母已经按照从小到大的顺序排列。

【输入】

只有一行,是一个由不同的小写字母组成的字符串,已知字符串的长度在1到6之间。
【输出】

输出这个字符串的所有排列方式,每行一个排列。要求字母序比较小的排列在前面。字母序如下定义:

已知S=s1s2...sk,T=t1t2...tk
,则S<T等价于,存在p(1≤p≤k),使得s1=t1,s2=t2,...,sp−1=tp−1,sp<tp

成立。

【输入样例】

abc

【输出样例】

abc
acb
bac
bca
cab
cba

【来源】

No

代码示例

#include <iostream>
using namespace std;
int len;
int a[10];
void dfs(char str[],int index,char bf[])
{
    if (index == len)
    {
        for (int i = 0; i < strlen(bf); i++)
        {
            cout << bf[i];
        }
        cout << endl;
        return;
    }
    for (int i = 0; i < strlen(str); i++)
    {
        if (a[i] == 0)
        {
            bf[index] = str[i];
            a[i] = 1;
            dfs(str, index+1,bf);
            a[i] = 0;
        }
    }
}
int main()
{
    char str[10];
    cin >> str;
    len = strlen(str);
    char bf[10];
    f(str,0,bf);
}

#none

作者: 麦兜

版权: 除特别声明,均采用BY-NC-SA 4.0许可协议,转载请表明出处

目录Content

评论