1199:全排列

简介: 1199:全排列

1199:全排列

时间限制: 1000 ms         内存限制: 65536 KB

【题目描述】

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

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

【输入】

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

【输出】

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

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

【输入样例】

abc

【输出样例】

abc

acb

bac

bca

cab

cba

【提示】

本题目禁止使用STL及包含可以使用的相关调用。

【来源】

No

1. #include<stdio.h>
2. #include<iostream> 
3. #include<cstring>
4. using namespace std;
5. bool b[1001];//标记 
6. char s[1001],as[1001]; //s存储原字符串 as存储排序方案 
7. int len;
8. void dfs(int i)
9. {
10.   for(int j=0;j<len;j++){
11.     if(!b[s[j]]){//判断是否用过 
12.       b[s[j]]=1;
13.       as[i]=s[j];
14.       if(i==len-1) printf("%s\n",as);//长度达到输出 
15.       else dfs(i+1);//否则取下一个长度 
16.       b[s[j]]=0;//标记取消 
17.     }
18.   }
19. }
20. int main()
21. {
22.   scanf("%s",s);
23.   len=strlen(s);
24.   dfs(0);//从长度0开始搜索 
25.   return 0;
26.  }
1. #include<stdio.h>
2. #include<iostream> 
3. #include<cstring>
4. using namespace std;
5. char a[1001];
6. int b[1001],c[1001]={0};
7. int len;
8. void dfs(int n)
9. {
10.   if(n==len){
11.     for(int i=0;i<len;i++) cout<<a[b[i]];
12.     cout<<endl;
13.   }
14.   for(int i=0;i<len;i++){
15.     if(!c[i]){//判断是否用过 
16.       c[i]=1;
17.       b[n]=i;
18.       dfs(n+1);//取下一个长度 
19.       c[i]=0;//标记取消 
20.     }
21.   }
22. }
23. int main()
24. {
25.   scanf("%s",a);
26.   len=strlen(a);
27.   dfs(0);//从长度0开始搜索 
28.   return 0;
29.  }

 

相关文章
|
数据可视化 API 开发者
通俗易懂:一步步教你 Flask 项目自动生成 API 文档
Flasgger,作为一款强大的 Flask 扩展,自动从 Flask 应用中提取并生成 OpenAPI 规范文档,配备 SwaggerUI,为开发者提供了一条快捷通道,让 API 的文档编制和交互式测试变得简单易行。Flasgger 的设计原则是简化开发流程,通过与 Flask 框架的无缝整合,让开发者可以更专注于应用逻辑的构建。
|
Windows
windows 技巧篇-解除共享文件夹占用方法,解决共享文件被占用导致不可修改问题,查看共享文件被谁占用方法
windows 技巧篇-解除共享文件夹占用方法,解决共享文件被占用导致不可修改问题,查看共享文件被谁占用方法
2346 0
windows 技巧篇-解除共享文件夹占用方法,解决共享文件被占用导致不可修改问题,查看共享文件被谁占用方法
|
机器学习/深度学习 人工智能 算法
技术开源|FunASR升级第三代热词方案
技术开源|FunASR升级第三代热词方案
3157 62
|
数据可视化 开发者 索引
详解Wireshark LUA插件函数:function p_myproto.dissector(buffer, pinfo, tree)
在 Wireshark 中,LUA 插件通过 `function p_myproto.dissector(buffer, pinfo, tree)` 扩展协议解析能力,解析自定义应用层协议。参数 `buffer` 是 `PacketBuffer` 类型,表示原始数据包内容;`pinfo` 是 `ProtoInfo` 类型,包含数据包元信息(如 IP 地址、协议类型等);`tree` 是
514 1
|
边缘计算 5G SDN
控制与用户平面分离 (CUPS): 5G 网络架构的革命性变革
控制与用户平面分离 (CUPS): 5G 网络架构的革命性变革
672 2
【C/PTA】选择结构进阶练习
【C/PTA】选择结构进阶练习
228 0
|
Java API
详细探究Java多线程的线程状态变化
Java多线程的线程状态主要有六种:新建(NEW)、可运行(RUNNABLE)、阻塞(BLOCKED)、等待(WAITING)、超时等待(TIMED_WAITING)和终止(TERMINATED)。线程创建后处于NEW状态,调用start()后进入RUNNABLE状态,表示准备好运行。当线程获得CPU资源,开始执行run()方法时,它处于运行状态。线程可以因等待锁或调用sleep()等方法进入BLOCKED或等待状态。线程完成任务或发生异常后,会进入TERMINATED状态。
21414 5
|
SQL 存储 前端开发
JAVA中怎样实现树形菜单
在这篇文章中,作者介绍了如何用两种方法实现目录树数据结构。首先,定义了目录结构在实际开发中的作用,即后端向前端返回整理好的数据,类似书目录的形式。接着,作者逐步讲解了实现目录树的步骤,包括创建数据表、插入数据、创建对象类以及编写逻辑代码。在逻辑代码部分,提供了两种写法,一种适合新手理解,另一种简洁但可能对初学者较难。每种写法都包含了获取数据、转换数据、构建树结构和获取顶层节点的过程。最后,展示了实现后的目录树结构数据。
252 2
|
负载均衡 Dubbo 应用服务中间件
阿里微服务架构到底多牛逼:深入解析Apache Dubbo与实战
在Apache Dubbo (以下简称Dubbo)重新开源之前,Dubbo已经被很多公司广泛用于生产环境并获得了良好的反馈,很多公司内部也会建立私有分支自己维护,其中Dubbox 就是基于Dubbo分支进行扩展并二次维护的。重新开源后,社区维护的Dubbo版本进行了大量“bug fix" .和特性支持,收到了大量Dubbo用户的支持和参与。编写本书的想法是在开源后提出来的,因此本书取名《深入理解Apache Dubbo与实战》。
|
算法 测试技术 C#
C++前缀和算法的应用:石头游戏 VIII 原理源码测试用例
C++前缀和算法的应用:石头游戏 VIII 原理源码测试用例