vlambda博客
学习文章列表

用深度优先搜索算法解决N王后问题

//A backtracking depth-first search (DFS) solution in JScript:import System;Console.ForegroundColor=14;Console.BackgroundColor=8;Console.Clear();Console.Title="N Queens";Console.Write("N=");var n=+Console.ReadLine(),r=new Array(n),s=1;function safe(x,y){ if(y==0)return true; for(var i=0;i<y;i++) { if(r[i]==x||r[i]==x+y-i||r[i]==x-y+i)return false; } return true;}function board(){ Console.WriteLine("Solution "+s+":"); for(var y=0;y<n;y++) { for(var x=0;x<n;x++) { Console.BackgroundColor=(x+y+1)%2*7; Console.Write(x==r[y]?"QV":" "); } Console.BackgroundColor=8;Console.WriteLine(); } Console.ReadKey(s++);Console.WriteLine();}function queen(y){ for(var x=0;x<n;x++) { if(safe(x,y)) { r[y]=x; if(y==n-1)board();else queen(y+1); } }}queen(0);

Forse altri canterà con miglior plettro.