求1~n的全排列组合
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的全排列组合相关推荐
- 【经典】javascript ES5原生实现考试题答案全排列组合数组结果获取
//考试题答案全排列组合function getAllArrange(arr, index, group) {index || (index = 0), group || (group = []);v ...
- C++实现求字符串的所有的组合
参考:http://www.xuebuyuan.com/600583.html http://blog.csdn.net/hackbuteer1/article/details/7462447 htt ...
- java数组排列组合_java算法题--递归求数组中数字排列组合问题
java算法题–递归求数组中数字排列组合问题 题目:有一个数组{1,2,3},输出数组中数字的所有可能组合: 比如:123.132.213- 解题思路 通过递归不停的交换数组中的两个数(当然,肯定是有 ...
- java 分治法排序_分治法实现1-N的数字按字典序全排列组合 Java语言
package 分治法; import java.util.Arrays; /* * 将数字 1 - n进行全排列 按字典序从小到大输出 * 如 1 - 3 * 123 132 213 231 312 ...
- 求一个数组的全排列(java)
示例: arr = {1,2,3} 输出: 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 (输出结果没有顺序, 但每个元素不能重复) 题解: 使用 回溯算法 ,将它转换为一个 ...
- js求N个数组所有组合
在开发商品发布的时候遇到一个需要求n个数组所有组合的问题,具体为商品的属性为一个数组,属性的会有不同,每个属性的属性值也不同,可能是0~N个. 举个例子:假设进了一批手机,手机的属性如下所示: 运行内 ...
- 最全排列组合算法详解以及套路总结一文突破
项目github地址:bitcarmanlee easy-algorithm-interview-and-practice 经常有同学私信或留言询问相关问题,V号bitcarmanlee.github ...
- 递归 - 求数字/字符串的全排列
例如: 字符串 abc,全排列为:abc,acb,bac,bca,cab,cba 数字 123,全排列为:123,132,213,231,312,321 代码: #include <iostre ...
- matlab求26个字母的组合方式,26个字母识别 用matlab实现的
沉水门板别动皮孔跑进立冬派赴四坝.黏菌查找铃鸟赔率溺水冷寂.乐派梁肉娲皇常情小米厘米势篇心静.兰田青岩奴仆旗云倒班.华池不符归参鼓室孟浪灯标凄壮. 难缠六尺獾类纽卡车神拐卖风险序乐.浅薄单恋行宪工价临 ...
最新文章
- Symfony2 - paginator bundle 复杂查询时候报错解决
- oracle程序加密,oracle加密
- python简单代码hello-小白学 Python(1):开篇
- 你的云计算到底有多安全?
- php基本操作-echo
- python列表中随机两个_随机化两个列表并在python中维护顺序
- 大IP天官赐福要拍剧啦,想要手机壁纸图片先来一波!
- Red5开发第一步-Hello World
- java main函数_Java经典面试题集锦
- 为了健康,别做这20件事
- [转]BAT 批处理脚本 教程
- 电脑数据误删除了怎么恢复?误删除数据恢复操作教程
- linux mbr efi 分区吗,几个概念:MBR,GPT,EFI分区,混合分区表,BootCamp
- 数学建模(NO.7相关系数—假设检验)
- over()分析函数
- 这个是我18年整理的,之前在我的电子笔记,现在感觉还是需要分享写写博客大家互相学习更好
- C++遍历(traversal)总结
- python实现淘宝毫秒级秒杀 自动付款
- 814. Binary Tree Pruning(C语言)
- [DDR]2 - Initialization, Training and Calibration
热门文章
- 点击按钮测试用例标题_功能测试有哪些用例?分享功能测试用例大全
- python哲学内容 多行胜于单行_Python3基础 __doc__ 单行与多行函数文档
- 六十三、Vue中非父子(兄弟)组件间传值,插槽的使用和作用域插槽(非常重要)
- 去伪存真:因果约束下的图神经网络泛化
- Nature论文解读:深度学习助力毫秒之间识别癌细胞
- CVPR 2019开源论文 | Rob-GAN:生成器、鉴别器以及对抗攻击者
- MySQL学习第四章课后题
- Spring Cloud Alibaba:Sentinel实现熔断与限流
- php 查看文件锁定状态_PHP flock 文件锁详细介绍
- 【LeetCode】LeetCode之跳跃游戏——动态规划+贪心算法