算法核心思想

回溯算法

递归实现

程序实现

坐标系

循环递归

回溯

计数

收集位置

特效添加

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>无标题文档</title>
<style>
*{ margin:; padding:;}
li{ list-style:none;}
#ul1{ height:auto; margin:20px auto; overflow:hidden; border:1px #FFF solid; border-right:none; border-bottom:none; background-image:url(img/bg.jpg); background-size:cover;}
#ul1 li{ float:left; border:1px #FFF solid;border-left:none; border-top:none; background-size:cover;}
#ul1 li.active{ animation:.5s infinite linear flash; -webkit-animation:.5s infinite linear flash;}
@keyframes flash{
%{ opacity:0.1;}
%{ opacity:;}
%{ opacity:0.1;}
}
@-webkit-keyframes flash{
%{ opacity:0.1;}
%{ opacity:;}
%{ opacity:0.1;}
}
</style>
</head> <body>
<ul id="ul1">
</ul>
<script> var oUl = document.getElementById('ul1');
var aLi = oUl.getElementsByTagName('li');
var sizeGird = ;
var num = ;
var iCount = ;
var posArr = [];
var posArrAll = []; init(); function init(){
createGird();
setQueen();
//console.log( posArrAll );
showImg();
} function createGird(){
var len = num * num; oUl.style.width = num * (sizeGird + ) + 'px'; for(var i=;i<len;i++){
var oLi = document.createElement('li');
oLi.style.width = sizeGird + 'px';
oLi.style.height = sizeGird + 'px';
oLi.index = -;
//oLi.innerHTML = oLi.index;
oUl.appendChild(oLi);
} for(var i=;i<num;i++){
for(var j=;j<num;j++){
//i j num
aLi[ i*num + j ].x = j;
aLi[ i*num + j ].y = i;
//aLi[ i*num + j ].innerHTML = j + ',' + i;
}
}
} function setQueen(iQueen){ if( iQueen == num ){
posArrAll.push( posArr.concat() );
iCount++;
return;
} for(var i=;i<num;i++){ if( aLi[ iQueen*num + i ].index == - ){
aLi[ iQueen*num + i ].index = iQueen;
//aLi[ iQueen*num + i ].innerHTML = iQueen;
posArr.push(aLi[ iQueen*num + i ]);
var x = aLi[ iQueen*num + i ].x;
var y = aLi[ iQueen*num + i ].y; for(var j=;j<aLi.length;j++){
if( aLi[j].index == - && (aLi[j].x == x || aLi[j].y == y || aLi[j].x - aLi[j].y == x - y || aLi[j].x + aLi[j].y == x + y) ){
aLi[j].index = iQueen;
//aLi[j].innerHTML = iQueen;
}
} setQueen( iQueen + ); //回溯
posArr.pop();
for(var j=;j<aLi.length;j++){
if( aLi[j].index == iQueen ){
aLi[j].index = -;
}
} }
}
} function showImg(){ change();
setInterval(change,); function change(){ for(var i=;i<aLi.length;i++){
aLi[i].style.backgroundImage = '';
aLi[i].className = '';
} var randomLi = posArrAll[ Math.floor(posArrAll.length * Math.random()) ]; for(var i=;i<randomLi.length;i++){
randomLi[i].style.backgroundImage = 'url(img/'+ Math.floor((Math.random()* + )) +'.jpg)';
randomLi[i].className = 'active';
randomLi[i].style.animationDelay = -Math.random()* + 's';
randomLi[i].style.webkitAnimationDelay = -Math.random()* + 's';
} } } </script>
</body>
</html>

JS算法与数据结构之八皇后(晕晕)的更多相关文章

  1. js学习之数据结构和算法

    js中的数据结构 1.列表 待办事项列表.购物清单.最佳十名榜单等等. 适用: 1)数据结构较为简单, 2)不需要在一个长序列中查找元素,或者对其进行排序 2.栈 一摞盘子 ----- 添加删除只能从 ...

  2. js的 算法 和 数据结构

    js的 算法 1.对一个对象数组按照对象某个属性进行排序  : https://www.cnblogs.com/webcabana/p/7460038.html 在做公交的项目中就碰到过这种算法问题, ...

  3. js算法初窥03(简单搜索及去重算法)

    前面我们了解了一些常用的排序算法,那么这篇文章我们来看看搜索算法的一些简单实现,我们先来介绍一个我们在实际工作中一定用到过的搜索算法--顺序搜索. 1.顺序搜索 其实顺序搜索十分简单,我们还是以第一篇 ...

  4. js算法初窥03(搜索及去重算法)

    前面我们了解了一些常用的排序算法,那么这篇文章我们来看看搜索算法的一些简单实现,我们先来介绍一个我们在实际工作中一定用到过的搜索算法——顺序搜索. 1.顺序搜索 其实顺序搜索十分简单,我们还是以第一篇 ...

  5. 技术期刊 · 天光台高未百尺 | Uber 工程师的 JS 算法课;大数据时代的个人隐私;设计师的 Github;告别 PPT 工程师;从零开始实现的像素画

    蒲公英 · JELLY技术期刊 Vol.42 这是一个最好的时代,多样化的平台给了所有人成长发展的机会,各种需求和解决需求的人让人大开眼界:但这也并不是完美的时代,"前端还需要懂什么算法?& ...

  6. 浅谈算法和数据结构: 七 二叉查找树 八 平衡查找树之2-3树 九 平衡查找树之红黑树 十 平衡查找树之B树

    http://www.cnblogs.com/yangecnu/p/Introduce-Binary-Search-Tree.html 前文介绍了符号表的两种实现,无序链表和有序数组,无序链表在插入的 ...

  7. python 下的数据结构与算法---2:大O符号与常用算法和数据结构的复杂度速查表

    目录: 一:大O记法 二:各函数高阶比较 三:常用算法和数据结构的复杂度速查表 四:常见的logn是怎么来的 一:大O记法 算法复杂度记法有很多种,其中最常用的就是Big O notation(大O记 ...

  8. LeetCode_算法及数据结构覆盖统计

    [输入]共计151道题的算法&数据结构基础数据 (见附录A) [输出-算法]其中有算法记录的共计 97道 ,统计后 结果如下  top3(递归,动态规划,回溯) 递归 动态规划 回溯 BFS ...

  9. JavaScript算法与数据结构知识点记录

    JavaScript算法与数据结构知识点记录 zhanweifu

随机推荐

  1. MBR . Have it removed!

    To know what it is, https://wiki.archlinux.org/index.php/Master_Boot_Record For a SD card, dd if=/de ...

  2. [置顶] Android Sensor系统剖析(4.0)(下)

    Author:Harish_hu@qq.com 由于现在电脑上只有4.0的代码,考虑到代码差别也不大,所以下部分,就基于4.0来分析.  3:SensorManager 上一部分说过,开机后,syst ...

  3. 《Head First Python》学习笔记 01

    Python 3提供了70多个内建函数,这是Python“功能齐全”的观点:Python已经包含足够多的内置功能,使你能完成大多数工作,而不必依赖第三方代码. Python 列表: Python列表是 ...

  4. html标签详解,html标签属性大全(完美版),包括css属性详解

    这个是平时放在笔记里,需要什么了,查下当字典用,想不起来了就查下,个人在用有道云,查询框一输就找到了.下篇会把我整理手机的html5发了.引用在某处常看到的话.楼主耗时费心整理··请拿走······· ...

  5. MJRefresh框架使用及说明

    一. MJRefresh的类解释. 1.MJRefreshComponent              所有刷新控件的基类别.(component: 成分,组件) 2.MJRefreshNormalH ...

  6. [ios2]苹果iOS 5限制应用本地存储问题 【转】

    苹果 iOS 5 系统增加了一个新的机制——在设备容量空间不足的情况下自动清除高速缓存文件或临时目录的内容.这意味着,如果你设备的容量快到极限了,应用存储的很多离线内容,包括文章.杂志.图书.漫画以及 ...

  7. H5 拖放事件详解

    拖放事件 H5的拖放事件提供了多个接口: 1.drag:当元素或者选中的文本被拖动时触发(每几百毫秒触发一次),应用在被拖拽元素上 2.dragend:当拖动操作结束时触发(通过释放鼠标按钮或者点击转 ...

  8. Maven之pom.xml 配置详解

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  9. jquery中这句 .stop(false,true); 什么意思

    .stop 是jQuery中用于控制页面动画效果的方法.运行之后立刻结束当前页面上的动画效果.stop在新版jQuery中添加了2个参数:第一个参数的意思是是否清空动画序列,也就是stop的是当前元素 ...

  10. 【CodeVS】1293

    输入输出样例 思路:看到题目我萌第一眼想到的肯定是求联通快对吧,但是这个联通快有点奇特,因为 这样他也算是一个联通快.解决此题其实有三种解法:1)宽搜(这个符合基本法):2)并查集:3)灌水法 但是蒟 ...