枚举法:又称穷举法,是指从可能的集合中一一列举各个元素,用题目给定的约束条件判定哪些是无用的,哪些是有用的。能使命题成立者,即为问题的解。
案例
首先我们先来看一个枚举算法
的经典案例,当乘积所有位数一致时,乘数是多少:
<!-- html代码 -->
<div style="width:200px;margin: 0 auto; position: relative;overflow: hidden;">
<p style="margin-left:1em">
<span>枚</span>
<span>举</span>
<span>算</span>
<span>法</span>
<span>题</span>
</p>
<p> *
<span style="position: absolute;top:3em;left:7em;">枚</span>
</p>
<hr width="300">
<p>
<span>题</span>
<span>题</span>
<span>题</span>
<span>题</span>
<span>题</span>
<span>题</span>
</p>
/*js代码*/
var aP = document.querySelectorAll('p');
var span1 = aP[0].querySelectorAll('span');
var span2 = aP[1].querySelectorAll('span');
var span3 = aP[2].querySelectorAll('span');
for(var i=1;i<=9;i++){
for(var j=1;j<=9;j++){
for(var k=1;k<=9;k++){
for(var m=1;m<=9;m++){
for(var n=1;n<=9;n++){
var a = 10000*i + 1000*j + 100*k + 10*m + 1*n;
var b = i;
var c = 5*111111;
if(a*b == c){
span1[0].innerHTML = i;
span1[1].innerHTML = j;
span1[2].innerHTML = k;
span1[3].innerHTML = m;
span1[4].innerHTML = n;
span2[0].innerHTML = i;
for(var x=0;x<span3.length;x++){
span3[x].innerHTML = n;
}
}
}
}
}
}
}
实例
我们做一个前端领域常用的实例,点击城市名就能在ul标签里添加一个城市,如果有重复点击,该城市会排到第一位
<!-- html代码 -->
</div>
<a href="javascript:;">北京</a>
<a href="javascript:;">上海</a>
<a href="javascript:;">武汉</a>
<a href="javascript:;">成都</a>
<a href="javascript:;">昆明</a>
<a href="javascript:;">重庆</a>
<a href="javascript:;">深圳</a>
<a href="javascript:;">杭州</a>
<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>
</ul>
列举了一些城市,新建了一个空的盒子ul,我们接着用js实现点击动态添加元素
var city = document.querySelectorAll('a');
var list = document.querySelector('ul');
var item = document.getElementsByTagName('li');
for(var i=0;i<city.length;i++){
city[i].onclick = function () {
var oLi = document.createElement('li');
if(feat(this.innerHTML))
{
list.insertBefore(oLi,item[0]);
oLi.innerHTML= this.innerHTML;
}else
{
for(var i=0;i<item.length;i++){
if(item[i].innerHTML == this.innerHTML){
list.insertBefore(item[i],item[0]);
}
}
}
}
}
/*防止重复添加*/
function feat(val){
var result = true;
for(var i=0;i<item.length;i++){
if (val == item[i].innerHTML ) {result = false}
}
//console.log(result);
return result;
}
大功告成!!!
网友评论