生成1~n的全排列,按字典序输出
这个题按照书上的解法,输出顺序并不是字典序,所以在网上找到了一个很棒的解法,先写到这里记录下来。
#include<iostream>
using namespace std;
int a[100];
void dfs(int cur,int n)//cur表示目前正在填的数,n表示总共要填的数
{if(cur==n)//递归边界,说明填完了 {for(int i=0;i<n;i++)//一个一个的输出 cout<<a[i]<<" ";cout<<endl;}for(int i=1;i<=n;i++)//把数字1-n填入 {int ok=1;for(int j=0;j<cur;j++)//遍历目前a数组里面的元素,判断当前这个数有没有填过(用过) {if(a[j]==i) ok=0;}if(ok==1){a[cur]=i;//没有填过就填 ,把它放在a数组的最后 dfs(cur+1,n);//再排A数组元素里面的第cur+1个位置 (这里就不需要设置撤销的动作了~反正每次进来都会判断数字有没有填过) }}
}
int main()
{int n;cin>>n;dfs(0,n);return 0;
}
以上是找到的解法,我自己写的是下面的,但是不能够按照字典顺序输出
#include <iostream> using namespace std;template<class type> inline void Swap(type & a, type & b) {type temp = a;a = b;b = temp; }template<class type> void Perm(type list[],int k, int m) {if(m == k){for(int i = 0;i <= m;i++)cout << list[i];cout << endl;}else{for(int i = k;i <= m;i++){Swap(list[k], list[i]);Perm(list, k+1, m);Swap(list[k], list[i]);}} }int main() {int N, num[10];cin >> N;for(int i = 1, j = 0;i <= N;i++, j++){num[j] = i;}Perm(num, 0, N-1);return 0; }
转载于:https://www.cnblogs.com/MarioNeTte/p/10578429.html
生成1~n的全排列,按字典序输出相关推荐
- 字典序输出不重复的全排列
今天下午参加某公司笔试时遇到的一道题,分享给大家: 题意如下: 现在给你一个字符数组,以及一个字符串长度限制(char[] arr, 2).已知这个字符数组内的字符就是密码,现在让你输出所有的密码,密 ...
- Python---按字典序输出集合的所有非空子集
Python---按字典序输出集合的所有非空子集 通过使用模拟二进制减法以判断每次选取的具体元素.其中flag[ ]为模拟二进制数,初始化全为1,当flag[0]为0时结束循环.下标为0位不作为选取( ...
- python全排列字典序输出 递归_递归实现全排列,字典序法实现全排列
问题:全排列的递归实现 编程思想: 用1 2 3为例,全排列结果为123,132,213,231,321,312 根据全排列的找到规律 1.将当前元素与后面位置的每个元素依此交换 2.交换后取后一个 ...
- python全排列字典序输出 递归_全排列-字典序列、递归方法c语言实现
当前位置:我的异常网» C语言 » 全排列-字典序列.递归方法c语言实现 全排列-字典序列.递归方法c语言实现 www.MyException.Cn 网友分享于:2014-04-20 浏览:4次 ...
- POJ2337 欧拉路径字典序输出
题意: 给一些单词,问是否可以每个单词只用一次,然后连接在一起(不一定要成环,能连接在一起就行). 思路: 这个题目的入手点比较好想,其实就是问欧拉路径,先说下解题步骤,然后在 ...
- java jsp生成pdf_如何使用jsp、servlet输出iText生成的pdf
使用itext生成pdf 如果每次都在服务端生成一个PDF文件给用户,不仅麻烦,而且浪费服务器资源,最好的方法就是以二进制流的形式输送到客户端. 1)JSP输出: response.setConten ...
- 在java中生成二维码,并直接输出到jsp页面
在java中生成的二维码不存到磁盘里要直接输出到页面上,这就需要把生成的二维码直接以流的形式输出到页面上,我用的是myeclipse 和 tomcat 它的原理是:在加载页面时,根据img的src(c ...
- linux nohup不生成日志,linux重定向及nohup不输出的方法
FreeBSD可以同时运行多个进程,在shell下直接输入命令后,shell将进程放到前台执行.如果要将进程放到后台执行,需要在命令行的结尾加上一个 "&" 符号.下面的命 ...
- 生成指定序列的前一字典序序列(洛谷P2525题题解,C++语言描述)
题目要求 P2525题目链接 分析 C++的STL中的prev_permutation函数可以生成前一个排列. 如果可以生成,则返回true,并可以直接用生成的序列:已经为第一个,则返回false. ...
最新文章
- Android 仿PhotoShop调色板应用(三) 主体界面绘制
- linux显示进程的h开头的,Linux上进程的开始时间
- 北京师范大学计算机系录取分数线,北京师范大学各省各专业录取分数线
- java 数组遍历_Java中遍历数组使用foreach循环还是for循环?
- 从贝泰妮的全域消费者运营,看Quick Audience如何链接产品服务商生态
- 浅谈:Android应用清理内存
- 2019温馨的元旦祝福语 2019元旦祝福语大全!收藏备用!
- 持续集成之Jenkins安装部署
- 静态变量的多线程同步问题
- Problem B: C语言习题 学生成绩输入和输出
- Perl语言入门14-17
- android studio 登录与注册,Android Studio实现QQ的注册登录和好友列表跳转
- linux 配置 NTP 服务器
- UG二次开发入门--一个简单的示例
- RHEL配置网卡vlan tag
- java实现T检验(Ttest)
- 当moba遇上麻将——刀塔自走棋
- 基于Jsp、Java、数据库、HTML实现网上投票系统(含文档和代码)Jsp课程设计
- Vue key的作用
- 故障:不能连接到共享打印机
热门文章
- .NET Core 实例接口代理转发
- 《消逝的光芒》为何能成为Steam热销榜常客 ?
- 《赛博朋克2077》是如何将人物表情和口型本地化的?
- 专接本汇编开发工具【Masm for Winodws 集成实验环境】安装细则
- mysql事务操作——transaction
- PL/SQL Developer启动时报错:“Control 'dxDockBrowserPanel' has no parent window
- java八种排序算法---直接插入排序
- 禁止32位安装包运行在64位操作系统上
- SQL Server数据库大型应用解决方案总结
- 风影ASP.NET基础教学 3 web服务器控件(二)