JavaScript-枚举算法

本文介绍了使用枚举算法来解决编程问题的方法,通过for循环列举所有可能情况,并结合if判断进行条件匹配,以找到正确答案。文中给出了两个具体的JavaScript应用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

枚举(穷举)算法解决问题的思路:
1.利用for循环列出所有可能的情况;
2.利用if判断将已知条件与所有可能情况进行匹配,匹配成功的结果即为最后答案。
下面是两个经典案例。


<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
        <p class="p1">
            <span></span>
            <span></span>
            <span></span>
            <span></span>
            <span></span>
        </p>
        <p class="p2">
            *
            <span></span>
        </p>
        <hr />
        <p class="p3">
            <span></span>
            <span></span>
            <span></span>
            <span></span>
            <span></span>
            <span></span>
        </p>
        <script type="text/javascript">

            var aP=document.getElementsByTagName('p');
            var aSpan1=aP[0].getElementsByTagName('span');
            var aSpan2=aP[1].getElementsByTagName('span');
            var aSpan3=aP[2].getElementsByTagName('span');

            for (var i=1; i<=9; i++) {
                for (var j=0; j<=9; j++) {
                    for (var k=0; k<=9; k++) {
                        for (var m=0; m<=9; m++) {
                            for (var n=1; n<=9; n++) {

                                var a=10000*i+1000*j+100*k+10*m+n;
                                var b=i;
                                var c=111111*n;

                                if ( a * b == c ) {

                                    aSpan1[0].innerHTML=i;
                                    aSpan1[1].innerHTML=j;
                                    aSpan1[2].innerHTML=k;
                                    aSpan1[3].innerHTML=m;
                                    aSpan1[4].innerHTML=n;

                                    aSpan2[0].innerHTML=i;

                                    for (var x=0; x<aSpan3.length; x++) {
                                        aSpan3[x].innerHTML=n;
                                    }

                                }


                            }
                        }
                    }
                }
            }
        </script>
    </body>
</html>

这里写图片描述


<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <a href="javascript:;">北京</a>
        <a href="javascript:;">上海</a>
        <a href="javascript:;">广州</a>
        <a href="javascript:;">深圳</a>
        <a href="javascript:;">杭州</a>
        <a href="javascript:;">重庆</a>
        <ul id="ul1"></ul>
        <script type="text/javascript">
            var aA=document.getElementsByTagName('a');
            var oUl=document.getElementById("ul1");
            var aLi=oUl.getElementsByTagName('li');
            for (var i=0; i<aA.length; i++) {
                aA[i].onclick=function(){
                    if (mj(this.innerHTML)) {  //true:列表中没有当前点击项
                        var oLi=document.createElement('li');
                        oLi.innerHTML=this.innerHTML;
                        if (!aLi[0]) {  // 如果ul中第一个li不存在;
                            oUl.appendChild(oLi);
                        }else{  // 如果ul中第一个li已存在,添加到列表中第一项。
                            oUl.insertBefore(oLi,aLi[0]);
                        }
                    }else{  //列表中已有当前点击项
                        mj2(this.innerHTML);   //将当前点击项移到列表首位
                    }
                }
            }
            function mj(text){    //枚举:判断列表中是否含有当前点击项
                var result=true;
                for (var i=0; i<aLi.length; i++) {
                    if (aLi[i].innerHTML==text) {
                        result=false;
                    }
                }
                return result;
            }
            function mj2(text){    //枚举:找出列表中的当前点击项,并将其移到列表首位
                for (var i=0; i<aLi.length; i++) {
                    if (aLi[i].innerHTML==text) {
                        oUl.insertBefore(aLi[i],aLi[0]);
                    }
                }
            }
        </script>
    </body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值