1.题目:给定一个数字n,求它的全排列

如n=3,则它的全排列组合方式有如下所示:
1 2 3 
1 3 2 
2 1 3 
2 3 1 
3 1 2 
3 2 1

2.思路:通过深度优先搜索来做,用一个数组来标记当前位置,一个数组来记录当前位置所代表的的值,只要未标记就加入排列数组中,当数组中元素达到n时,输出这个排列,并取消对应位置的标记

3.代码如下所示:

public class Main {public static void dfs(int pos,boolean flag[],int nums[]){//nums数组记录排列的数组,if (pos>=nums.length){//若当前数组元素个数超过n,输出数组中元素for (int i = 0; i <nums.length ; i++) {System.out.print(nums[i]+" ");}System.out.println();}else {//若还未排列完毕,继续添加元素for (int i = 0; i <nums.length ; i++) {if (!flag[i]){//若当前位置还未被添加到数组中,访问这个位置对应的元素nums[pos]=i+1;//添加数字到当前排列中去flag[i]=true;//标记此位置,代表这个位置的元素已被添加dfs(pos+1,flag,nums);//继续添加其余位置的元素flag[i]=false;//一趟排列采集到后,释放此标记位置,让其余排列能访问到此位置}}}}public static void main(String[] args) {Scanner sc=new Scanner(System.in);int n=sc.nextInt();boolean flag[]=new boolean[n];int nums[]=new int[n];dfs(0,flag,nums);}
}

4.结果如下所示:

求1~n的全排列组合相关推荐

  1. 【经典】javascript ES5原生实现考试题答案全排列组合数组结果获取

    //考试题答案全排列组合function getAllArrange(arr, index, group) {index || (index = 0), group || (group = []);v ...

  2. C++实现求字符串的所有的组合

    参考:http://www.xuebuyuan.com/600583.html http://blog.csdn.net/hackbuteer1/article/details/7462447 htt ...

  3. java数组排列组合_java算法题--递归求数组中数字排列组合问题

    java算法题–递归求数组中数字排列组合问题 题目:有一个数组{1,2,3},输出数组中数字的所有可能组合: 比如:123.132.213- 解题思路 通过递归不停的交换数组中的两个数(当然,肯定是有 ...

  4. java 分治法排序_分治法实现1-N的数字按字典序全排列组合 Java语言

    package 分治法; import java.util.Arrays; /* * 将数字 1 - n进行全排列 按字典序从小到大输出 * 如 1 - 3 * 123 132 213 231 312 ...

  5. 求一个数组的全排列(java)

    示例: arr = {1,2,3} 输出: 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 (输出结果没有顺序, 但每个元素不能重复) 题解: 使用 回溯算法 ,将它转换为一个 ...

  6. js求N个数组所有组合

    在开发商品发布的时候遇到一个需要求n个数组所有组合的问题,具体为商品的属性为一个数组,属性的会有不同,每个属性的属性值也不同,可能是0~N个. 举个例子:假设进了一批手机,手机的属性如下所示: 运行内 ...

  7. 最全排列组合算法详解以及套路总结一文突破

    项目github地址:bitcarmanlee easy-algorithm-interview-and-practice 经常有同学私信或留言询问相关问题,V号bitcarmanlee.github ...

  8. 递归 - 求数字/字符串的全排列

    例如: 字符串 abc,全排列为:abc,acb,bac,bca,cab,cba 数字 123,全排列为:123,132,213,231,312,321 代码: #include <iostre ...

  9. matlab求26个字母的组合方式,26个字母识别 用matlab实现的

    沉水门板别动皮孔跑进立冬派赴四坝.黏菌查找铃鸟赔率溺水冷寂.乐派梁肉娲皇常情小米厘米势篇心静.兰田青岩奴仆旗云倒班.华池不符归参鼓室孟浪灯标凄壮. 难缠六尺獾类纽卡车神拐卖风险序乐.浅薄单恋行宪工价临 ...

最新文章

  1. Symfony2 - paginator bundle 复杂查询时候报错解决
  2. oracle程序加密,oracle加密
  3. python简单代码hello-小白学 Python(1):开篇
  4. 你的云计算到底有多安全?
  5. php基本操作-echo
  6. python列表中随机两个_随机化两个列表并在python中维护顺序
  7. 大IP天官赐福要拍剧啦,想要手机壁纸图片先来一波!
  8. Red5开发第一步-Hello World
  9. java main函数_Java经典面试题集锦
  10. 为了健康,别做这20件事
  11. [转]BAT 批处理脚本 教程
  12. 电脑数据误删除了怎么恢复?误删除数据恢复操作教程
  13. linux mbr efi 分区吗,几个概念:MBR,GPT,EFI分区,混合分区表,BootCamp
  14. 数学建模(NO.7相关系数—假设检验)
  15. over()分析函数
  16. 这个是我18年整理的,之前在我的电子笔记,现在感觉还是需要分享写写博客大家互相学习更好
  17. C++遍历(traversal)总结
  18. python实现淘宝毫秒级秒杀 自动付款
  19. 814. Binary Tree Pruning(C语言)
  20. [DDR]2 - Initialization, Training and Calibration

热门文章

  1. 点击按钮测试用例标题_功能测试有哪些用例?分享功能测试用例大全
  2. python哲学内容 多行胜于单行_Python3基础 __doc__ 单行与多行函数文档
  3. 六十三、Vue中非父子(兄弟)组件间传值,插槽的使用和作用域插槽(非常重要)
  4. 去伪存真:因果约束下的图神经网络泛化
  5. Nature论文解读:深度学习助力毫秒之间识别癌细胞
  6. CVPR 2019开源论文 | Rob-GAN:生成器、鉴别器以及对抗攻击者
  7. MySQL学习第四章课后题
  8. Spring Cloud Alibaba:Sentinel实现熔断与限流
  9. php 查看文件锁定状态_PHP flock 文件锁详细介绍
  10. 【LeetCode】LeetCode之跳跃游戏——动态规划+贪心算法