A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本次给大家分享的是暴力搜索,这种搜索算法很直接了当,用的也比较多。以下我们用一道实际面试中的题目来举列子。
曾经又一次看到过某上市公司出过一道这样的笔试题:写一个函数,实现[['a','0'],['b','1'],['c','2']] => ['abc','ab2','a1c','a12','0bc','0b2','01c','012''],
那么这题的核心思路就是使用暴力搜索进行逐一匹配各种可能的组合,具体代码如下:
[JavaScript] 纯文本查看 复制代码
var arr=[["a","0"],["b","1"],["c","2"]];
            function f1(arr) {
                var arr1=[];//存放子数组长度
                var arr2=[];//存放临时数组长度
                var result=[];//存放结果
                var num=1;//获取所有情况
                //获取数组信息
                for(var i=0;i<arr.length;i++){  
                    arr1.push(arr[i].length);
                    arr2.push(0); 
                    num=num*arr[i].length;
                }  
                var str="";
                //获取排列组合
                for(var k=0;k<num;k++){ 
                    var num1=k; 
                    str="";
                    for(var j=0;j<arr.length;j++){
                    arr2[j]=num1%arr1[j];//获取当前数组的元素
                    str=str+arr[j][arr2[j]];//获取当前情况的元素
                    num1=parseInt(num1/arr1[j]);//获取下一个数组的值
                    }
                    result.push(str);
                }
                return result;
            }
            console.log(f1(arr));


以上代码仅供参考,如果有更优化的或者更好的建议,欢迎随时探讨

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马