排列组合的算法
2015-10-28 14:19
274 查看
// JS 版
<head> <title>test</title> <script type="text/javascript"> function com(data) { var N = data.length;//列个数 var store = []; var temp = []; for (var size = N; size >= 1; --size) for (var mask = (1 << size) - 1; mask < 1 << N;) { var total = 1; for (var i = 0; i < N; ++i) if (mask & 1 << i) { temp[i] = total; total *= data[i].length; } for (var id = 0; id < total; ++id) { var s = []; for (var j = 0; j < N; ++j) if (mask & 1 << j) { var v = (id - id % temp[j]) / temp[j] % data[j].length; s.push(data[j][v]); } store.push(s); } var x = mask & - mask; var y = mask + x; mask = ((mask & ~y) / x >> 1) | y; } return store; } var data = [ ["A1",'A2','A3'] ,["B1","B2"] ,["C1","C2"] ,['d1'] ,['e1','e2','e3'] ]; document.write(com(data).join('<br />')); </script> </head> <body> abcd </body>
相关文章推荐
- angular js 传递集合参数
- CouchDB introduction
- Linux 下JDK 安装
- 自己动手写的jquery分页控件(非常简单实用)
- iOS开发,时时获取照相机数据流 RTSP
- 迪菲.赫尔曼(Diffie–Hellman)密钥交换算法
- Vim的分屏功能
- layer 一款口碑极佳的web弹层组件,弹框专用
- MVC4.0中ViewBag、ViewData、TempData和ViewModel几种传值方式的区别
- JS自执行函数的几种写法
- js动态控制导航栏样式
- 深入理解android view 生命周期
- iOS开发--抛物线动画
- netbeans启动tomcat失败
- 几个Java基础面试题
- Android中的dispatchTouchEvent()、onInterceptTouchEvent()和onTouchEvent()
- Gradle Plugin User Guide
- 编译器 调试器 构造工具
- iOS 通知处理,当应用未激活时
- Form禁止重复提交总结