文档章节

基础算法----全排列

春哥大魔王的博客
 春哥大魔王的博客
发布于 2017/02/27 11:23
字数 202
阅读 8
收藏 0
点赞 0
评论 0

实现全排列

今天结合面试题实现一个数组的全排列;

思路

试想,我们要对123进行全排列:

  1. 我们可以采用将1固定,“23”进行全排列;
  2. 将“2”固定,对“13”进行全排列;
  3. 将“3”固定,对“12”进行全排列;
  4. 每次固定位置之后,还原置换顺序到之前的状态;

实现

string str = "1234";

#region 全排列
static void allPermutation(char[] arr, int start, int end)
{
     if (start == end)
     {
           for (int i = 0; i < arr.Length; i++)
           {
                System.Console.Write(arr[i]);
            }
            System.Console.Write("\n");
      }
      else
      {
            for (int i = start; i <= end; i++)
            {
                swap(arr, i, start);//将某一位置换到第一位固定
                allPermutation(arr, start + 1, end);
                swap(arr, i, start);//还原上面置换
            }
      }
  }

  static void swap(char[] arr, int left, int right)
  {
      char temp = arr[left];
      arr[left] = arr[right];
      arr[right] = temp;
  }
  #endregion

结果

全排列结果

源码

http://git.oschina.net/aspnet/Suan-Fa

© 著作权归作者所有

共有 人打赏支持
春哥大魔王的博客
粉丝 17
博文 119
码字总数 66330
作品 0
海淀
程序员
程序员必备算法——排列组合

程序员必备算法——排列组合 [TOC] 还记得排列组合吗? 在高中的时候最常接触的莫过于排列组合了,毕竟高考必考的嘛。我们先来回忆下这两个的公式是啥: 如果看到这个还有一丢丢的印象,说明...

窗边的扁豆 ⋅ 2017/10/07 ⋅ 0

60.Permutation Sequence-Leetcode

基础回顾 String 头文件中必须包括 string的声明初始化 遍历 string与char* 字符串连接 string与int转化(注意stringstream) 我的算法(受nextPermutation影响大,算法效率低) nextPermut...

analanxingde ⋅ 01/15 ⋅ 0

【万能搜索】万能DFS之全排列(一)——普通算法

DFS相信大家都很熟悉,下面就给出一种用DFS实现的算法。 全排列 大家对于全排列是很熟悉的,比如123的全排列就有: 123 132 213 231 312 321 这六种。 现在,我们来设计一个算法,来求出所有...

qq_37656398 ⋅ 2017/12/03 ⋅ 0

算法复习之字符串(1)

(1)字符串循环左移 | 字符串全排列(递归,非递归)《本节内容》 (2)KMP算法| BF算法 (3 字符串的最长回文子串|BM算法| 字符串查找 串是有零个或者多个字符组成的有限序列,也叫字符串。...

多了去的YangXuLei ⋅ 2017/08/09 ⋅ 0

2018-01-9 记百度电话面试

自我介绍 聊项目相关 聊聊基础 stringbuffer,stringbuilder区别 jvm内存模型 GC算法,项目中实现的GC算法??(不会实现) 聊聊java的锁synchronize和lock,说说读写锁 说说spring的重要特性(ioc)...

芥末无疆sss ⋅ 01/10 ⋅ 0

列举全排列的递归算法的java代码实现

在很多情况下,我们需要使用程序列举出一个数组或一个字符串中所有元素的全排列,一种最简单易懂的全排列算法就是递归算法,其算法思想如下: 1、想要得到一个n个元素的全排列,只需要先拿出...

qq_32216775 ⋅ 2017/05/07 ⋅ 0

排列组合算法

1.组合算法 1.1 方法一 本程序的思路是开一个数组,其下标表示1到m个数,数组元素的值为1表示其下标 代表的数被选中,为0则没选中。 首先初始化,将数组前n个元素置1,表示第一个组合为前n个...

面码 ⋅ 2014/05/15 ⋅ 0

全排列(含递归和非递归的解法)

作者:bakari 时间:2012.8.2-23:48 转载请注明出处:http://www.cnblogs.com/bakari/archive/2012/08/02/2620826.html 谢谢! 全排列在近几年各大网络公司的笔试中出现的比较频繁 首先来看看...

chambai ⋅ 2012/08/02 ⋅ 0

全排列算法思想

全排列的生成算法就是对于给定的字符集,用有效的将所有可能的全排列无重复无遗漏地枚举出来。任何n个字符集的排列都可以与1~n的n个数字的排列一一对应,因此在此就以n个数字的排列为例说明...

cpulwt ⋅ 2012/09/12 ⋅ 0

47. Permutations II

使用递归算法特性:必须的终止条件子问题比原来的问题小子问题可以再递归求解子问题的解能够组成大问题的解 a bc b ac c ba

datacube ⋅ 2016/07/05 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Java Web如何操作Cookie的添加修改和删除

创建Cookie对象 Cookie cookie = new Cookie("id", "1"); 修改Cookie值 cookie.setValue("2"); 设置Cookie有效期和删除Cookie cookie.setMaxAge(24*60*60); // Cookie有效时间 co......

二营长意大利炮 ⋅ 今天 ⋅ 0

【每天一个JQuery特效】淡入淡出显示或隐藏窗口

我是JQuery新手爱好者,有时间就练练代码,防止手生,争取每天一个JQuery练习,在这个博客记录下学习的笔记。 本特效主要采用fadeIn()和fadeOut()方法显示淡入淡出的显示效果显示或隐藏元...

Rhymo-Wu ⋅ 今天 ⋅ 0

Spring JDBC使用方法

普通实现: 1、创建数据表customer。 可以使用任何数据库实现,在项目中要引入相应数据库驱动包并配置相应数据库连接。 2、创建Customer pojo。 Customer类的属性对应数据库的属性,除了为每...

霍淇滨 ⋅ 今天 ⋅ 0

Contos 7 安装Jenkins

Jenkins是一款能提高效率的软件,它能帮你把软件开发过程形成工作流,典型的工作流包括以下几个步骤 开发 提交 编译 测试 发布 有了Jenkins的帮助,在这5步中,除了第1步,后续的4步都是自动...

欧虞山 ⋅ 今天 ⋅ 0

revel

revel install go get github.com/revel/revelgo get github.com/revel/cmd create new app revel new git.oschina.net/zdglf/myapp run app revel run git.oschina.net/zdglf/myapp ot......

zdglf ⋅ 今天 ⋅ 0

49. Group Anagrams - LeetCode

Question 49. Group Anagrams Solution 思路:维护一个map,key是输入数组中的字符串(根据字符排好序) Java实现: public List<List<String>> groupAnagrams(String[] strs) { Map<Strin......

yysue ⋅ 今天 ⋅ 0

spring Email

使用spring发Email其实就是使用spring自己封装携带的一个javamail.JavaMailSenderImpl类而已。这个类可以当一个普通的java对象来使用,也可以通过把它配置变成spring Bean的方式然后注入使用...

BobwithB ⋅ 今天 ⋅ 0

spark 整理的一些知识

Spark 知识点 请描述spark RDD原理与特征? RDD全称是resilient distributed dataset(具有弹性的分布式数据集)。一个RDD仅仅是一个分布式的元素集合。在Spark中,所有工作都表示为创建新的...

tuoleisi77 ⋅ 今天 ⋅ 0

思考

时间一天天过感觉自己有在成长吗?最怕的是时光匆匆而过,自己没有收获!下面总结下最近自己的思考。 认识自己 认识另一个自己,人们常说要虚心听取别人意见和建议。然而人往往是很难做到的,...

hello_hp ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部