好程序员web前端分享javascript枚举算法

简介: 好程序员web前端分享javascript枚举算法,题目:在1,2,3,4,5 五个数中,我们随机选取 3个数。问有多少种取法?并且把每种取出数的方法列举出来。乍看这道题,其实感觉没什么难度。三个for循环不就解决问题了。

好程序员web前端分享javascript枚举算法,题目:在1,2,3,4,5 五个数中,我们随机选取 3个数。问有多少种取法?并且把每种取出数的方法列举出来。

乍看这道题,其实感觉没什么难度。三个for循环不就解决问题了。

代码:

var arr=[1,2,3,4,5];

for(var i=0;i<5;i++){
    for(var j=0;j<5;j++){
        for(var k=0;k<5;k++)
            if(arr[i]!=arr[j]!=arr[j]){
                console.log(arr[i]+''+arr[j]+arr[k]);
            }
    }
}

这样子就可以打印出来每种遍历的情况。是不是看起来很简单。但是,如果我们需要解决这一类问题的话,此解法就感觉不足了。比如说:我们在十个数取出八个数求结果,一百个数取出八十个数求出结果。那么,我们分别要循环8次和80次,那么这肯定是不行的。那么,怎么办呢?? 其实采用枚举就可以了。

代码:

var number=[1,2,3,4,5]; //我们操作的数组

var state=[];   //记录状态的数组
var shu=[];    //枚举出来答案得到的数组。
function dfs(step,n){   //n,代表取几个数出来。
    var flag=true;
        if(step==n){  //判断条件,判断是否取出来了个数。
                console.log(state.join(""));
                shu.push(state.join(""));  //把取出来的书方法数组中
                return 0; //结束循环
        }
        for(var i=0;i<number.length;i++){ //循环数据
                for(var j=0;j<state.length;j++){  //判断时候取出来重复的数。
                    if(state[j]==number[i]){
                        flag=false;
                        break;
                    }
                }
                if(flag){
                        state.push(number[i]);  //保存当前环境
                        dfs(step+1,n);
                        state.pop(number[i]);  //回退到上一层的环境
                }

                flag=true;

            }
    }
    dfs(0,4);

    console.log(shu.length);

其实最重要的代码就是上面

if(flag){
state.push(number[i]); //保存当前环境
dfs(step+1,n);
state.pop(number[i]); //回退到上一层的环境
}

相关文章
|
9天前
|
编解码 前端开发 JavaScript
构建高效响应式Web界面:现代前端框架的比较
【4月更文挑战第9天】在移动设备和多样屏幕尺寸盛行的时代,构建能够适应不同视口的响应式Web界面变得至关重要。本文深入探讨了几种流行的前端框架——Bootstrap、Foundation和Tailwind CSS,分析它们在创建响应式设计中的优势与局限。通过对比这些框架的栅格系统、组件库和定制化能力,开发者可以更好地理解如何选择合适的工具来优化前端开发流程,并最终实现高性能、跨平台兼容的用户界面。
|
10天前
|
前端开发 JavaScript 关系型数据库
从前端到后端:构建现代化Web应用的技术探索
在当今互联网时代,Web应用的开发已成为了各行各业不可或缺的一部分。从前端到后端,这篇文章将带你深入探索如何构建现代化的Web应用。我们将介绍多种技术,包括前端开发、后端开发以及各种编程语言(如Java、Python、C、PHP、Go)和数据库,帮助你了解如何利用这些技术构建出高效、安全和可扩展的Web应用。
|
11天前
|
编解码 前端开发 JavaScript
Web 前端开发中的最佳实践
本文将介绍 Web 前端开发中的最佳实践,包括代码组织、性能优化、响应式设计和用户体验等方面。通过遵循这些实践,开发人员可以提高开发效率,优化用户体验,并减少潜在的问题和错误。
|
30天前
|
JavaScript 前端开发 测试技术
使用Selenium执行JavaScript脚本:探索Web自动化的新领域
本文介绍了如何在Selenium中使用JavaScript解决自动化测试中的复杂问题。Selenium的`execute_script`函数用于同步执行JS,例如滑动页面、操作时间控件等。在滑动操作示例中,通过JS将页面滚动到底部,点击下一页并获取页面信息。对于只读时间控件,利用JS去除readonly属性并设置新日期。使用JS扩展了Selenium的功能,提高了测试效率和精准度,适用于各种自动化测试场景。
41 1
|
4天前
|
前端开发 搜索推荐 数据安全/隐私保护
HTML标签详解 HTML5+CSS3+移动web 前端开发入门笔记(四)
HTML标签详解 HTML5+CSS3+移动web 前端开发入门笔记(四)
13 1
|
4天前
|
前端开发 JavaScript vr&ar
前端新技术探索:WebAssembly、Web Components与WebVR/AR
【4月更文挑战第12天】WebAssembly、Web Components和WebVR/AR正重塑Web应用的未来。WebAssembly允许C/C++等语言在Web上高效运行,提供接近原生的性能,如游戏引擎。Web Components通过Custom Elements和Shadow DOM实现可复用的自定义UI组件,提升模块化开发。WebVR/AR(现WebXR)则让VR/AR体验无需额外应用,直接在浏览器中实现。掌握这些技术对前端开发者至关重要。
12 3
|
26天前
|
机器学习/深度学习 前端开发 算法
利用机器学习优化Web前端性能的探索与实践
本文将介绍如何利用机器学习技术来优化Web前端性能,探讨机器学习在前端开发中的应用,以及通过实际案例展示机器学习算法对前端性能优化的效果。通过结合前端技术和机器学习,提升Web应用的用户体验和性能表现。
|
27天前
|
移动开发 前端开发 HTML5
Web前端全栈HTML5通向大神之路
本套课程共三大阶段,六大部分,是WEB前端、混合开发与全栈开发必须要掌握的技能,从基础到实践,是从编程小白成长为全栈大神的最佳教程!
34 3
Web前端全栈HTML5通向大神之路
|
8月前
|
Web App开发 前端开发 JavaScript
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-fiber解决了什么问题
前端学习笔记202307学习笔记第五十七天-模拟面试笔记react-fiber解决了什么问题
95 0
|
8月前
|
前端开发 定位技术
前端学习笔记202305学习笔记第二十三天-地图单线程配置
前端学习笔记202305学习笔记第二十三天-地图单线程配置
63 0
前端学习笔记202305学习笔记第二十三天-地图单线程配置