这个题按照书上的解法,输出顺序并不是字典序,所以在网上找到了一个很棒的解法,先写到这里记录下来。

#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的全排列,按字典序输出相关推荐

  1. 字典序输出不重复的全排列

    今天下午参加某公司笔试时遇到的一道题,分享给大家: 题意如下: 现在给你一个字符数组,以及一个字符串长度限制(char[] arr, 2).已知这个字符数组内的字符就是密码,现在让你输出所有的密码,密 ...

  2. Python---按字典序输出集合的所有非空子集

    Python---按字典序输出集合的所有非空子集 通过使用模拟二进制减法以判断每次选取的具体元素.其中flag[ ]为模拟二进制数,初始化全为1,当flag[0]为0时结束循环.下标为0位不作为选取( ...

  3. python全排列字典序输出 递归_递归实现全排列,字典序法实现全排列

    问题:全排列的递归实现 编程思想: 用1 2 3为例,全排列结果为123,132,213,231,321,312  根据全排列的找到规律 1.将当前元素与后面位置的每个元素依此交换 2.交换后取后一个 ...

  4. python全排列字典序输出 递归_全排列-字典序列、递归方法c语言实现

    当前位置:我的异常网» C语言 » 全排列-字典序列.递归方法c语言实现 全排列-字典序列.递归方法c语言实现 www.MyException.Cn  网友分享于:2014-04-20  浏览:4次 ...

  5. POJ2337 欧拉路径字典序输出

    题意:       给一些单词,问是否可以每个单词只用一次,然后连接在一起(不一定要成环,能连接在一起就行). 思路:       这个题目的入手点比较好想,其实就是问欧拉路径,先说下解题步骤,然后在 ...

  6. java jsp生成pdf_如何使用jsp、servlet输出iText生成的pdf

    使用itext生成pdf 如果每次都在服务端生成一个PDF文件给用户,不仅麻烦,而且浪费服务器资源,最好的方法就是以二进制流的形式输送到客户端. 1)JSP输出: response.setConten ...

  7. 在java中生成二维码,并直接输出到jsp页面

    在java中生成的二维码不存到磁盘里要直接输出到页面上,这就需要把生成的二维码直接以流的形式输出到页面上,我用的是myeclipse 和 tomcat 它的原理是:在加载页面时,根据img的src(c ...

  8. linux nohup不生成日志,linux重定向及nohup不输出的方法

    FreeBSD可以同时运行多个进程,在shell下直接输入命令后,shell将进程放到前台执行.如果要将进程放到后台执行,需要在命令行的结尾加上一个 "&" 符号.下面的命 ...

  9. 生成指定序列的前一字典序序列(洛谷P2525题题解,C++语言描述)

    题目要求 P2525题目链接 分析 C++的STL中的prev_permutation函数可以生成前一个排列. 如果可以生成,则返回true,并可以直接用生成的序列:已经为第一个,则返回false. ...

最新文章

  1. Android 仿PhotoShop调色板应用(三) 主体界面绘制
  2. linux显示进程的h开头的,Linux上进程的开始时间
  3. 北京师范大学计算机系录取分数线,北京师范大学各省各专业录取分数线
  4. java 数组遍历_Java中遍历数组使用foreach循环还是for循环?
  5. 从贝泰妮的全域消费者运营,看Quick Audience如何链接产品服务商生态
  6. 浅谈:Android应用清理内存
  7. 2019温馨的元旦祝福语 2019元旦祝福语大全!收藏备用!
  8. 持续集成之Jenkins安装部署
  9. 静态变量的多线程同步问题
  10. Problem B: C语言习题 学生成绩输入和输出
  11. Perl语言入门14-17
  12. android studio 登录与注册,Android Studio实现QQ的注册登录和好友列表跳转
  13. linux 配置 NTP 服务器
  14. UG二次开发入门--一个简单的示例
  15. RHEL配置网卡vlan tag
  16. java实现T检验(Ttest)
  17. 当moba遇上麻将——刀塔自走棋
  18. 基于Jsp、Java、数据库、HTML实现网上投票系统(含文档和代码)Jsp课程设计
  19. Vue key的作用
  20. 故障:不能连接到共享打印机

热门文章

  1. .NET Core 实例接口代理转发
  2. 《消逝的光芒》为何能成为Steam热销榜常客 ?
  3. 《赛博朋克2077》是如何将人物表情和口型本地化的?
  4. 专接本汇编开发工具【Masm for Winodws 集成实验环境】安装细则
  5. mysql事务操作——transaction
  6. PL/SQL Developer启动时报错:“Control 'dxDockBrowserPanel' has no parent window
  7. java八种排序算法---直接插入排序
  8. 禁止32位安装包运行在64位操作系统上
  9. SQL Server数据库大型应用解决方案总结
  10. 风影ASP.NET基础教学 3 web服务器控件(二)