递归--练习7--noi1750全排列

一、心得

二、题目

1750:全排列

总时间限制: 
1000ms

内存限制: 
65536kB
描述

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

三、AC代码

 /*
noi1750全排列
//三个数组
一个是原来存储基本数据的
一个是储存答案的
一个是做标记的
还有有个数来存答案的位数的
*/
#include <iostream>
#include <algorithm>
using namespace std;
int vis[];
char ans[];
void print(char ans[],int n){
for(int i=;i<n;i++){
cout<<ans[i];
}
cout<<endl;
}
void f(string s,int cur){
int n=s.length();
if(cur==n) print(ans,n);
else{
for(int i=;i<n;i++){
if(!vis[i]){
vis[i]=;
ans[cur]=s[i];
f(s,cur+);
vis[i]=;
}
}
} } int main(){
string s;
cin>>s;
sort(s.begin(),s.end());
f(s,);
return ;
}

最新文章

  1. lua 和 c/c++ 交互 (持续更新)
  2. C中字符串的几种定义方法及说明
  3. SQL封装、多态与重载
  4. 掌握 Ajax,第 2 部分: 使用 JavaScript 和 Ajax 发出异步请求
  5. jsp页面的使用
  6. 不能读取文件“itunes.library.itl”因为它是由更高级别的itunes所创建的
  7. Android IOS WebRTC 音视频开发总结(二九)-- 安卓噪声消除交流
  8. Mvc Kissy uploader实现图片批量上传 附带瀑布流的照片墙
  9. Javascript:一个优雅的时钟
  10. C#管理控制IIS7的方法
  11. Angular2.0的项目架构
  12. 2017多校第10场 HDU 6181 Two Paths 次短路
  13. GUI(自定义背景图片)
  14. redis的主从模式搭建及注意事项
  15. css hack 用法注意
  16. PHP上传压缩包并自解压方法
  17. CSS层叠样式
  18. Linux Crontab 任务管理工具命令以及示例
  19. php服务端学习感想
  20. 10、驱动中的阻塞与非阻塞IO

热门文章

  1. EF的使用(DbContext对象的共用问题)
  2. docx4j基本操作
  3. talib 中文文档(七):Overlap Studies Functions
  4. android showDialog用法
  5. 005-java的Annotation
  6. 国内比特币bitcoin交易平台
  7. Hyperledger Fabric 开发环境搭建 centos7系统
  8. 破解NET的四大神器(转)
  9. 前端基础(html)
  10. 2017-2018 ACM-ICPC Nordic Collegiate Programming Contest (NCPC 2017) Solution