若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。


  • 运维

  • 前端

  • 编程

  • 随笔

  • hust-oj

3129: 进阶递归之全排列

发表于 2017-10-06   |   分类于 HUSTOJ   |   阅读次数 1,294

题目描述

给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列。我们假设对于小写字母有'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

参考代码

#include<stdio.h>
#include<string.h>
int n=0,a[6],b[6];
char ch[6];
void f(int );
int main() 
{
    int i;
    for (i=0;i<6;i++)
            a[i]=0;
    scanf("%s",ch);
    n=strlen(ch);
    f(0);
    return 0;
}
void f(int m) 
{
    int i;
    if(m==n) 
    {
        for (i=0;i<n;i++)
                    printf("%c",ch[b[i]]);
        printf("n");
        return;
    }
    for(i=0;i<n;i++)
    {
        if(a[i]==0)
        {
            b[m]=i;
            a[i]=1;
            f(m+1);
            a[i]=0;
        }
    }
}

解析

暂无

hustoj

发表评论 取消回复

邮箱地址不会被公开。 必填项已用*标注

*
*


hoxis wechat
著作权归作者所有
站点更新说明
  • 文章目录
  • 站点概览
若是凉夜已成梦

若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。

1904 日志
6 分类
12 标签
RSS
weibo github twitter facebook

友情链接

Skip 原站点 Dreams孤独患者
© 2017 若是凉夜已成梦
Powered by WordPress | 已运行
Theme By NexT.Mist