[51nod1384]全排列
法一:next_permutation函数,两个参数分别为起始指针和末尾指针。
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 char arr[19]; 5 int main(){ 6 scanf("%s",arr); 7 int len=strlen(arr); 8 sort(arr,arr+len); 9 char *s=arr,*t=arr+len; 10 do{ 11 printf("%s\n",arr); 12 }while(next_permutation(s,t)); 13 }
法二:dfs
注意全排列一共有$n!$种,所以num数组一定要开的够大。
1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 char arr[100]; 5 char brr[100]; 6 string num[720000]; 7 bool v[100]; 8 int n; 9 int k=0; 10 void dfs(int t){ 11 if(t>=n){ 12 num[k++]=brr; 13 return; 14 } 15 16 for(int i=0;i<n;i++){//dfs必须多加熟悉 17 if(!v[i]){ 18 v[i]=true; 19 brr[t]=arr[i]; 20 dfs(t+1); 21 v[i]=false; 22 } 23 } 24 } 25 int main(){ 26 scanf("%s",arr); 27 n=strlen(arr); 28 //sort(arr,arr+n); 29 //这里不必排,因为最后肯定要排 30 dfs(0); 31 sort(num,num+k); //这里必须排序 32 int m=unique(num,num+k)-num; 33 for(int i=0;i<m;i++){ 34 cout<<num[i]<<endl; 35 } 36 }
转载于:https://www.cnblogs.com/elpsycongroo/p/6912331.html
[51nod1384]全排列相关推荐
- 51Nod-1384 全排列【全排列】
1384 全排列 给出一个字符串S(可能有重复的字符),按照字典序从小到大,输出S包括的字符组成的所有排列.例如:S = "1312", 输出为: 1123 1132 1213 ...
- 字符串全排列的问题 python和c语言实现
前言 这是一个的经典的问题 设计一个算法,输出一个字符串字符的全排列. 比如,String = "abc" 输出是"abc","bac",& ...
- 求字符串全排列 python实现
文章目录 算法思想 附上c语言实现 参考 算法思想 输入一个字符串,打印这个字符串中字符的全排列. eg: 输入:abc 输出:abc acb bac bca cab cba 思路:将求字符串的全排列 ...
- #418 Div2 Problem B An express train to reveries (构造 || 全排列序列特性)
题目链接:http://codeforces.com/contest/814/problem/B 题意 : 有一个给出两个含有 n 个数的序列 a 和 b, 这两个序列和(1~n)的其中一个全排列序列 ...
- 获取序列全排列Java,java中全排列的生成算法汇总
全排列的生成算法就是对于给定的字符集,用有效的方法将所有可能的全排列无重复无遗漏地枚举出来.任何n个字符集的排列都可以与1-n的n个数字的排列一一对应, 因此在此就以n个数字的排列为例说明排列的生成法 ...
- 【经典】javascript ES5原生实现考试题答案全排列组合数组结果获取
//考试题答案全排列组合function getAllArrange(arr, index, group) {index || (index = 0), group || (group = []);v ...
- 蓝桥杯 扑克序列(全排列)
扑克序列 A A 2 2 3 3 4 4, 一共4对扑克牌.请你把它们排成一行. 要求:两个A中间有1张牌,两个2之间有2张牌,两个3之间有3张牌,两个4之间有4张牌. 请填写出所有符合要求的排列中, ...
- LeetCode实战:全排列
题目英文 Given a collection of distinct integers, return all possible permutations. Example: Input: [1,2 ...
- 【Codeforces】908B New Year and Buggy Bot(暴力+全排列)
http://codeforces.com/contest/908/problem/B 0 1 2 3 可以对应 上下左右.(具体哪个对应哪个,试过才知道) str 的 长度 为 100,0 1 2 ...
最新文章
- grafana官方使用文档_使用 Loki 采集微服务日志
- 柱坐标系下的ns方程_笛卡尔坐标系到底是什么?
- r语言读取csv文件赋值gamma_tidyfst vs pandas(1):csv文件读写
- map分组后取前10个_map根据属性排序、取出map前n个
- 阿里的事前验尸_(不太完全)100天的代码-验尸
- spring框架(三)mvc
- 安装引导黑屏_给电脑安装系统老是装不上,重启就黑屏,原来是这项设置在作怪!...
- Cinemachine教程 | Unity中如何快速制作镜头晃动?
- 如何使用VideoProc将MKV转换为MP4?
- 服务器显示AL024是什么意思,云端时代云终端快速部署指南(S11AL).ppt
- 站在5G潮头 爱立信如何重描金字招牌 | MWC 2019
- memcpy和strcpy的区别
- android 公式编辑器,公式编辑器
- windows修改用户文件夹名称 更改用户名 修改C盘Users目录下文件夹名称
- 解决其他浏览器能上网谷歌浏览器不能上网
- linux sdl windows.h,SDL入门教程(十):1、多语言支持,Win32下的GetText
- 涂涂乐的详细实现之三--文件IO操作
- 【IDEA】IDEA常用配置
- presson绘图练习
- xx壳通过外网远程访问本地SQLServer服务器(原创)
热门文章
- Django分页的基本实现办法
- 使用Maven搭建Struts2+Spring3+Hibernate4的整合开发环境
- ACM训练赛--递推专题
- 浅析三层架构与MVC模式的区别
- C++中的string 类型占几个字节
- Arduino编程之Serial.println()和Serial.print()
- 树莓派wiringPi常用的函数介绍
- UART0串口编程(六):串口(UART0)之UC/OS(二)UC/OS下的串口接收任务编程
- c strlen C++ strlen
- 彻底理解JavaScript中回调函数 (推荐)