下载此文档

JavaScript解八皇后问题的方法总结 javascript技巧.doc


文档分类:IT计算机 | 页数:约10页 举报非法文档有奖
1/10
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/10 下载此文档
文档列表 文档介绍
JavaScript解八皇后问题的方法总结_javascript技巧.doc:..JavaScript解八皇后问题的方法总结关于八皇后问题的JavaScript解法,总觉得是需要学习一下算法的,哪天要用到的时候发现真不会就尴尬了背景八皇后问题是一个以国际象棋为背景的问题:如何能够在8X8的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皐后都不能处于同一条横行、纵行或斜线上八皇后问题可以推广为更一般的n皇后摆放问题:这吋棋盘的大小变为nXn,而皇后个数也变成no当且仅当n二1或n$4时问题有解盲目的枚举算法通过N重循环,枚举满足约束条件的解(八重循环代码好多,这里进行四重循环),找到四个皇后的所有可能位置,然后再整个棋盘里判断这四个皇后是否会直接吃掉彼此,程序思想比较简单functioncheckl(arr,n){for(vari=0;i<n;i++){for(varj=i+1;j<n;j++){if((arr[i]二二arr[j])||Math,abs(arr[i]-arr[j])二二j-i){returnfalse;}returntrue;}l(){vararr=[];for(arr[0]二1;arr[0]〈二4;arr[0]++){for(arr[1]二1;arr[1]〈二4;arr[1]++){for(arr[2]=1;arr[2]<=4;arr[2]++){for(arr[3]=1;arr[3]<=4;arr[3]++){if(!checkl(arr,4)){continue;}else{console,log(arr);}}queenl();//[2,4,1,3]//[3,1,4,2]关于结果,在4*4的棋盘里,四个皇后都不可能是在一排,arr[O]到arr[3]分别对应四个皇后,数组的下标与下标对应的值即皇后在棋盘中的位置回溯法『走不通,就回头』,在适当节点判断是否符合,不符合就不再进行这条支路上的探索functioncheck2(arr,n){for(vari二0;i<=n-1;i++){(arr[i]==arr[n])){if((Math・3bs(3rr[i]-arr[n])二二n-i)returnfalse;}}returntrue;functionqueen2(){vararr二[];for(arr[0]=1;arr[0]<=4;arr[0]++){for(arr[l]=1;arr[1]<=4;arr[1]++){if(!check2(arr,1))continue;//摆两个皇后产生冲突的情况for(arr[2]=1;arr[2]<=4;arr[2]++){if(!check2(arr,2))continue;//摆三个皇后产生冲突的情况for(arr[3]=1;arr[3]<=4;arr[3]++){if(!check2(arr,3)){continue;}else{console,log(arr);queen2();//[2,4,1,3]//[3,1,4,2]非递归冋溯法算法框架:wh订e(k>0『有路可走』and『未达到目标』){//k>0有路可走if(k>n){//搜索到叶子节点//搜索到一个解,输出}else{//a[k]第一个可能的值while(『a[k

JavaScript解八皇后问题的方法总结 javascript技巧 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数10
  • 收藏数0 收藏
  • 顶次数0
  • 上传人小博士
  • 文件大小558 KB
  • 时间2019-07-27
最近更新