八皇后javascript实现

<script type="text/javascript">
function QueenArithmetic(size)
{
	var Queen =  new Array(10);//每行皇后的位置
	var y, x, i, j, d, t = 0;
	y = 0;
	Queen[0] = -1;
	while (true)
	{
		for (x = Queen[y] + 1; x < size; x++)
		{
			for (i = 0; i < y; i++)
			{
				j = Queen[i];
				d = y - i;
				//检查新皇后是否能与以前的皇后相互攻击
				if ((j == x) || (j == x - d) || (j == x + d))
					break;
			}
			if (i >= y)
				break;//不攻击
		}
		if (x == size) //没有合适的位置
		{
			if (0 == y)
			{
				//回朔到了第一行
				document.write("Over");
				break; //结束
			}
			//回朔
			Queen[y] = -1;
			y--;
		}
		else
		{
			Queen[y] = x;//确定皇后的位置
			y++;//下一个皇后
			if (y < size)
				Queen[y] = -1;
			else
			{
				//所有的皇后都排完了,输出
				document.write("\n" + ++t + ':'+"<br/>");
				for (i = 0; i < size; i++)
				{
					for (j = 0; j < size; j++)
						document.write(Queen[i] == j ? 'Q' : '*');
					document.write("<br/>");
				}
				y = size - 1;//回朔
			}
		}
	}
}
QueenArithmetic(8);
</script>
posted @ 2011-10-14 17:09  木由水  阅读(536)  评论(0编辑  收藏  举报