递归--练习7--noi1750全排列
递归--练习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 ;
}
递归--练习7--noi1750全排列的更多相关文章
- 递归实现1-n的全排列(JAVA语言)
思路: For example: 123的全排列= 1在最前面 23的全排列 + 2在最前面 13的全排列 + 3最前面 12的全排列 所以只需交换和最前面元素的位置,生成剩余元素的全排列即可. im ...
- 递归实现全排列python
python递归实现"abcd"字符串全排列 1.保持a不动,动bcd 2.保持b不动,动cd 3.保持c不动,动d def pailie(head="",st ...
- 基于visual Studio2013解决面试题之0602全排列
题目
- Java数据结构和算法 - 递归
三角数字 Q: 什么是三角数字? A: 据说一群在毕达哥拉斯领导下工作的古希腊的数学家,发现了在数学序列1,3,6,10,15,21,……中有一种奇特的联系.这个数列中的第N项是由第N-1项加N得到的 ...
- [剑指Offer]17-打印从1到最大的n位数(递归)
题目 如题,输入n,则从1打印至99. 题解 考虑到n比较大会有大数问题,所以使用字符数组存储数. 由题可用递归求n位全排列,即为所得. 具体地,用临时字符数组用来存答案,每次递归填好一位,都填好后输 ...
- 【IT笔试面试题整理】字符串的排列
[试题描述]输入一个字符串,打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab,cba. 分析:这是一道很好的考查对 ...
- NLP 自然语言处理之综述
(1) NLP 介绍 NLP 是什么? NLP (Natural Language Processing) 自然语言处理,是计算机科学.人工智能和语言学的交叉学科,目的是让计算机处理或"理解 ...
- 【LeetCode】46. Permutations 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 解题方法 方法一:库函数 方法二:递归 方法三:回溯法 日期 题目地址:h ...
- python非递归全排列
刚刚开始学习python,按照廖雪峰的网站看的,当前看到了函数这一节.结合数组操作,写了个非递归的全排列生成.原理是插入法,也就是在一个有n个元素的已有排列中,后加入的元素,依次在前,中,后的每一个位 ...
随机推荐
- Iterator 和 Iterable 区别和联系
首先预览下Java源码中的Iterator和Iterable: Iterable接口: public interface Iterable<T> {//这里只摘录接口中的抽象方法 /** ...
- linux 分卷压缩和合并
压缩: 可以用任何方式压缩,如tar -czf 分卷: split [OPTION]... [INPUT [PREFIX]] -b 代表分卷大小, 后面可以加单位,如G,M,K. 如果不 ...
- JavaScript callback function 理解
看到segmentfault上的这个问题 JavaScript 回调函数怎么理解,觉得大家把异步和回调的概念混淆在一起了.做了回答: 我觉得大家有点把回调(callback)和异步(asynchron ...
- Django之urls.py详解
urls.py:URL分发器(路由配置文件)URL配置(URLconf)就像是Django所支撑网站的目录.它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表.你就是以这种方式告诉Dj ...
- UML Diagrams Using Graphviz Dot
Introduction Background This article is about using the dot tool from the Graphviz package to automa ...
- Day06 DOM4J&schema介绍&xPath
day06总结 今日内容 XML解析之JAXP( SAX ) DOM4J Schema 三.XML解析器介绍 操作XML文档概述 1 如何操作XML文档 XML文档也是数据的一种,对数据的 ...
- Mirror--日志流压缩
在SQL SERVER 2008之后,主库和镜像库之间的日志流传送会默认使用压缩,压缩一方面降低了网络压力,另一方面增大了镜像两端的CPU压力. 可以打开 TF 1462 来关闭日志流压缩 SQL S ...
- 9.python的列表
list2 = [1, 2, 3, 4, 5, 6, 7 ]; print ("list2[1:5]: ", list2[1:5]) 得到 list2[1:5]: [2, 3, ...
- django高级之点赞、文章评论及上传文件
目录: 点赞 文章评论 上传文件 保留页面条件 一.点赞 1.所用技术: django model F查询 js应用:$(function () {}); 为文件加载完成执行ready() 方法.等同 ...
- 二、 Mosquitto 使用说明
一. 继上一篇文章<<Mosquitto 介绍&安装>> 之后.本章介绍 Mosquitto 的 简单使用. 1> 创建用户 # groupadd mosquit ...