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' ] ]
相关推荐
-
Java、JavaScript、Oracle、MySQL中实现的MD5加密算法分享
MD5,全称为 Message Digest Algorithm 5(消息摘要算法第五版).详情请参考 维基百科:MD5 MD5加密后是一个字节数组, 但我们一般是取其十六进制的字符串表示法,当然,十六进制数字符串是区分大小写,在 mysql数据库,Java,和JavaScript语言中,一般是使用小写的字符串来表示, 而在 Oracle数据库官方提供的包中,返回的是大写字符串,这算是一个坑,如果你想要执行多次 md5,可能需要转换为小写. 相关的代码如下: 1. Java版MD5 MD5Uti
-
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
-
JavaScript数据结构和算法之图和图算法
图的定义 图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合. 有向图 有向边:若从顶点Vi到Vj的边有方向,则称这条边为有向边,也成为弧(Arc),用有序偶<Vi,Vj>来表示,Vi称为弧尾,Vj称为弧头. 无序图 无向边:若顶点Vi到Vj之间的边没有方向,则称这条边为无向边(Edge),用无序偶(Vi,Vj)来表示. 简单图 简单图:在图结构中,若不存在顶点到其自身的边,且同一条边不重复出现,
-
javascript增加干扰数据实现简单加密效果
复制代码 代码如下: var lishustr = "qwertyuiopasdfghjklmnbvcxz"; var s = lishustr.split(""); var lishua = ""; var lishub = ""; var lishuc = ""; var lishud = ""; lishua = s[getRandomNum(1,26)]; lishub = s[
-
JavaScript中九种常用排序算法
笔试面试经常涉及各种算法,本文简要介绍常用的一些算法,并用JavaScript实现. 一.插入排序 1)算法简介 插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入.插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间. 2)算法描述和实现 一般来说,插入排序都采
-
浅谈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
-
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加密解密7种方法总结分析
本文一共介绍了七种javascript加密方法: 在做网页时(其实是网页木马呵呵),最让人烦恼的是自己辛辛苦苦写出来的客户端IE运行的javascript代码常常被别人轻易的拷贝,实在让自己的心里有点不是滋味,要知道自己写点东西也挺累的......^*^ 但我们也应该清楚地认识到因为javascript代码是在IE中解释执行,要想绝对的保密是不可能的,我们要做的就是尽可能的增大拷贝者复制的难度,让他知难而退(但愿~!~),下面我结合自己这几年来的实践,及个人研究的心得,和大家一起来探讨一下网页中
-
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
随机推荐
- 快速学习AngularJs HTTP响应拦截器
- Python网络爬虫出现乱码问题的解决方法
- Tomcat实现session共享(session 会话复制)
- 浅析.net策略模式
- php递归调用删除数组空值元素的方法
- 无数据库的详细域名查询程序PHP版(5)
- PHP基于socket实现客户端和服务端通讯功能
- Python入门篇之对象类型
- linux BASH shell下设置字体及背景颜色
- 字符不会撑大表格的常见css样式
- Linux服务器无法登陆问题的解决方法
- IDC服务器托管之技术名词解释什么是服务器
- 关于Hosts文件
- IE6 hack for js 集锦
- C++实现下载的代码
- jQuery 实现ajax传入参数含有特殊字符的方法总结
- 详谈Java中BigDecimal的一个除法异常
- PHP 中 var_export、print_r、var_dump 调试中的区别
- Android开发之ViewFlipper自动播放图片功能实现方法示例
- 用xpath获取指定标签下的所有text的实例