JavaScript实现穷举排列(permutation)算法谜题解答
谜题
穷举一个数组中各个元素的排列
策略
减而治之、递归
JavaScript解
/**
* Created by cshao on 12/23/14.
*/
function getPermutation(arr) {
if (arr.length == 1) {
return [arr];
}
var permutation = [];
for (var i=0; i<arr.length; i++) {
var firstEle = arr[i];
var arrClone = arr.slice(0);
arrClone.splice(i, 1);
var childPermutation = getPermutation(arrClone);
for (var j=0; j<childPermutation.length; j++) {
childPermutation[j].unshift(firstEle);
}
permutation = permutation.concat(childPermutation);
}
return permutation;
}
var permutation = getPermutation(['a','b','c']);
console.dir(permutation);
结果
[ [ 'a', 'b', 'c' ],
[ 'a', 'c', 'b' ],
[ 'b', 'a', 'c' ],
[ 'b', 'c', 'a' ],
[ 'c', 'a', 'b' ],
[ 'c', 'b', 'a' ] ]
相关推荐
-
JavaScript加密解密7种方法总结分析
本文一共介绍了七种javascript加密方法: 在做网页时(其实是网页木马呵呵),最让人烦恼的是自己辛辛苦苦写出来的客户端IE运行的javascript代码常常被别人轻易的拷贝,实在让自己的心里有点不是滋味,要知道自己写点东西也挺累的......^*^ 但我们也应该清楚地认识到因为javascript代码是在IE中解释执行,要想绝对的保密是不可能的,我们要做的就是尽可能的增大拷贝者复制的难度,让他知难而退(但愿~!~),下面我结合自己这几年来的实践,及个人研究的心得,和大家一起来探讨一下网页中
-
JavaScript中九种常用排序算法
笔试面试经常涉及各种算法,本文简要介绍常用的一些算法,并用JavaScript实现. 一.插入排序 1)算法简介 插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入.插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间. 2)算法描述和实现 一般来说,插入排序都采
-
JavaScript数据结构和算法之图和图算法
图的定义 图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合. 有向图 有向边:若从顶点Vi到Vj的边有方向,则称这条边为有向边,也成为弧(Arc),用有序偶<Vi,Vj>来表示,Vi称为弧尾,Vj称为弧头. 无序图 无向边:若顶点Vi到Vj之间的边没有方向,则称这条边为无向边(Edge),用无序偶(Vi,Vj)来表示. 简单图 简单图:在图结构中,若不存在顶点到其自身的边,且同一条边不重复出现,
-
JavaScript实现SHA-1加密算法的方法
本文实例讲述了JavaScript实现SHA-1加密算法的方法.分享给大家供大家参考.具体实现方法如下: 调用方法:hex_sha1即可. 复制代码 代码如下: /* * * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined * in FIPS PUB 180-1 * * By lizq * * 2006-11-11 * */ /* * * Configurable var
-
javascript实现des解密加密全过程
复制代码 代码如下: //Paul Tero, July 2001 //http://www.tero.co.uk/des/ // //Optimised for performance with large blocks by Michael Hayworth, November 2001 //http://www.netdealing.com // //THIS SOFTWARE IS PROVIDED "AS IS" AND //ANY EXPRESS OR IMPLIED WA
-
Java、JavaScript、Oracle、MySQL中实现的MD5加密算法分享
MD5,全称为 Message Digest Algorithm 5(消息摘要算法第五版).详情请参考 维基百科:MD5 MD5加密后是一个字节数组, 但我们一般是取其十六进制的字符串表示法,当然,十六进制数字符串是区分大小写,在 mysql数据库,Java,和JavaScript语言中,一般是使用小写的字符串来表示, 而在 Oracle数据库官方提供的包中,返回的是大写字符串,这算是一个坑,如果你想要执行多次 md5,可能需要转换为小写. 相关的代码如下: 1. Java版MD5 MD5Uti
-
JavaScript实现N皇后问题算法谜题解答
谜题 N皇后问题.将N个皇后放置在NxN的国际象棋棋盘上,其中没有任何两个皇后处于同一行.同一列或同一对角线上,以使得它们不能互相攻击. 策略 回溯法. JavaScript解 以8皇后问题为例: 复制代码 代码如下: /** * Created by cshao on 12/28/14. */ function getNQueens(order) { if (order < 4) { console.log('N Queens problem apply for order b
-
javascript md5加密代码
var hex_chr = "0123456789abcdef"; function rhex(num) { str = ""; for(j = 0; j > (j * 8 + 4)) & 0x0F) + hex_chr.charAt((num >> (j * 8)) & 0x0F); return str; } function str2blks_MD5(str) { nblk = ((str.length + 8) >&g
-
javascript增加干扰数据实现简单加密效果
复制代码 代码如下: var lishustr = "qwertyuiopasdfghjklmnbvcxz"; var s = lishustr.split(""); var lishua = ""; var lishub = ""; var lishuc = ""; var lishud = ""; lishua = s[getRandomNum(1,26)]; lishub = s[
-
浅谈Javascript Base64 加密解密
html代码: 复制代码 代码如下: <!DOCTYPE html> <html> <head> <title>Page Title</title> <style type="text/css"> *{font-family: Consolas;font-style: italic} .responsebox{width:900px;margin:10px auto;pa
随机推荐
- AngularJS基础 ng-options 指令详解
- 详解redis数据结构之压缩列表
- JS+jQuery实现注册信息的验证功能
- iOS应用开发中视图控件UIWindow的基本使用教程
- Python ZipFile模块详解
- 原生javascript实现图片滚动、延时加载功能
- 在程序中使用Cookie集合(定义/新建/删除)及案例讲解
- php封装的验证码工具类完整实例
- 深入浅析php json 格式控制
- 用正则删除不包含某个字符串的行的代码
- Python全局变量用法实例分析
- 服务器的ARP欺骗攻击的防范的两种解决方法
- ASP基础入门第一篇(ASP技术简介)
- C#设置MDI子窗体只能弹出一个的方法
- jQuery选择器querySelector的使用指南
- 深入浅析Java反射机制
- 详解Java编程中向量(Vector)的应用
- C语言快速幂取模算法小结
- JS小球抛物线轨迹运动的两种实现方法详解
- nginx常见问题整理和解决办法