枚举(穷举)算法解决问题的思路:
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>