递归--练习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成立。

样例输入
  1. abc
样例输出
  1. abc
  2. acb
  3. bac
  4. bca
  5. cab
  6. cba

三、AC代码

  1. /*
  2. noi1750全排列
  3. //三个数组
  4. 一个是原来存储基本数据的
  5. 一个是储存答案的
  6. 一个是做标记的
  7. 还有有个数来存答案的位数的
  8. */
  9. #include <iostream>
  10. #include <algorithm>
  11. using namespace std;
  12. int vis[];
  13. char ans[];
  14. void print(char ans[],int n){
  15. for(int i=;i<n;i++){
  16. cout<<ans[i];
  17. }
  18. cout<<endl;
  19. }
  20. void f(string s,int cur){
  21. int n=s.length();
  22. if(cur==n) print(ans,n);
  23. else{
  24. for(int i=;i<n;i++){
  25. if(!vis[i]){
  26. vis[i]=;
  27. ans[cur]=s[i];
  28. f(s,cur+);
  29. vis[i]=;
  30. }
  31. }
  32. }
  33.  
  34. }
  35.  
  36. int main(){
  37. string s;
  38. cin>>s;
  39. sort(s.begin(),s.end());
  40. f(s,);
  41. return ;
  42. }

递归--练习7--noi1750全排列的更多相关文章

  1. 递归实现1-n的全排列(JAVA语言)

    思路: For example: 123的全排列= 1在最前面 23的全排列 + 2在最前面 13的全排列 + 3最前面 12的全排列 所以只需交换和最前面元素的位置,生成剩余元素的全排列即可. im ...

  2. 递归实现全排列python

    python递归实现"abcd"字符串全排列 1.保持a不动,动bcd 2.保持b不动,动cd 3.保持c不动,动d def pailie(head="",st ...

  3. 基于visual Studio2013解决面试题之0602全排列

     题目

  4. Java数据结构和算法 - 递归

    三角数字 Q: 什么是三角数字? A: 据说一群在毕达哥拉斯领导下工作的古希腊的数学家,发现了在数学序列1,3,6,10,15,21,……中有一种奇特的联系.这个数列中的第N项是由第N-1项加N得到的 ...

  5. [剑指Offer]17-打印从1到最大的n位数(递归)

    题目 如题,输入n,则从1打印至99. 题解 考虑到n比较大会有大数问题,所以使用字符数组存储数. 由题可用递归求n位全排列,即为所得. 具体地,用临时字符数组用来存答案,每次递归填好一位,都填好后输 ...

  6. 【IT笔试面试题整理】字符串的排列

    [试题描述]输入一个字符串,打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab,cba. 分析:这是一道很好的考查对 ...

  7. NLP 自然语言处理之综述

    (1) NLP 介绍 NLP 是什么? NLP (Natural Language Processing) 自然语言处理,是计算机科学.人工智能和语言学的交叉学科,目的是让计算机处理或"理解 ...

  8. 【LeetCode】46. Permutations 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 解题方法 方法一:库函数 方法二:递归 方法三:回溯法 日期 题目地址:h ...

  9. python非递归全排列

    刚刚开始学习python,按照廖雪峰的网站看的,当前看到了函数这一节.结合数组操作,写了个非递归的全排列生成.原理是插入法,也就是在一个有n个元素的已有排列中,后加入的元素,依次在前,中,后的每一个位 ...

随机推荐

  1. 【Object.prototype.toString.call()】---判断某个对象属于哪种内置类型------【巷子】

    预热:目前我们知道区分对象类型的方式有三种 :type   instanceof   Object.prototype.toString.call. 那么这三种的区别是什么呢? type 在 Java ...

  2. C# WebBrowser的8个方法、13个属性和事件

    1.方法 说明 GoBack 相当于IE的“后退”按钮,使你在当前历史列表中后退一项 GoForward 相当于IE的“前进”按钮,使你在当前历史列表中前进一项  GoHome 相当于IE的“主页”按 ...

  3. mysql-blog

    https://www.cnblogs.com/zhanht/p/5450559.html

  4. 【Python】自动化测试框架-共通方法汇总

    1.滚动滚动条(有的时候页面元素element取得对但是并没有回显正确的数据,可能是因为页面第一次加载很慢,所以页面可能做了滚动到哪里就加载到哪里的效果,此刻我们就需要用到滚动条自动滚动这段代码让页面 ...

  5. [py]django的manytomany字段和后台搜索过滤功能

    我本来想搞下Django之select_related和prefetch_related的区别,看到这里有djangoapi的知识, 之前搞过django restfulapi,http://blog ...

  6. leetcode 数据库题解

    184. Department Highest Salary 题意: The Employee table holds all employees. Every employee has an Id, ...

  7. JS随机数种子

    JS随机数种子 1 试着想一下,如果在某一个场景,我们做一个游戏,用户玩到一半的时候退出了,这样 用户下次进来可以选择继续上一次的进度继续玩,那么现在问题来了:用户玩 的进度以及用户的积分等简单的描述 ...

  8. spring基础-01

    IOC : inversion of 缩写, DI:dependency injection 即在调用者中注入被调用者的实例. AOP 面向切面编程,是代理模式的体现.spring默认使用JDK的动态 ...

  9. SpringData修改和删除操作

    SpringData的查询我们已经学完了,我们现在就研究一下SpringData的修改和删除. @Modifying 注解和事务 @Query 与 @Modifying 这两个 annotation一 ...

  10. 2016-ccf-data-mining-competition 搜狗用户画像构建

    想法1:   分成147(3*7*7)类, 后来觉得这样效果不好,后来看了看竞赛要求的也是分别预测,分别评分,而不是一次就把3类的标签都给出   所有后来我们改进了当时的想法,决定对年龄,性别,学历进 ...