主题:[原创]用Javascript解八皇后问题
把下列文本保存成HTM文件并打开。运行过程中会提示“是否中止脚本运行”,建议选否保证打出全部解。
<html>
<title>Eight Queens</title>
<script language=javascript>
<!--
// Question Eight Queens
// Programmed by j.t.Chang
var n = 8;
var a = new Array(n+1);
var k=1,i,sum=0;
function place(k)
{var j;
for(j=1;j<k;j++)
if( (Math.abs(k-j)==Math.abs(a[j]-a[k]))||(a[j]==a[k]))
return false;
return true;
}
function print_result()
{var s=" ";
var i,j;
document.write("Answer ",++sum);
document.writeln(": (");
for(j=1;j<=n;j++) document.writeln(a[j]);
document.write(")<br>")
document.write("<table border=1 cellspacing=0>")
for(i=1;i<=n;i++)
{document.write("<tr>")
for(j=1;j<=n;j++)
{ if((i+j)%2!=0)
document.write("<td bgcolor=#C0C0C0><p align=center>");
else document.write("<td><p align=center>");
if (j==a[i]) document.write("Q");
else document.write(" ");
document.write("</td>");
}
}
document.write("</table>");
document.write("</br>");
}
document.write("Question Eight Queens answers.</br>")
document.write("Programmed by j.t.Chang.</br></br>")
for(i=1;i<=n;i++) a[i] = 0;
while(k>0) {
a[k]+=1;
while ((a[k]<=n)&&!place(k)) a[k]+=1;
if (a[k]<=n)
if(k==n) print_result();
else {
k++;
a[k]=0;
}
else k--;
}
document.write("sum = ",sum)
//-->
</script>
</html>
<html>
<title>Eight Queens</title>
<script language=javascript>
<!--
// Question Eight Queens
// Programmed by j.t.Chang
var n = 8;
var a = new Array(n+1);
var k=1,i,sum=0;
function place(k)
{var j;
for(j=1;j<k;j++)
if( (Math.abs(k-j)==Math.abs(a[j]-a[k]))||(a[j]==a[k]))
return false;
return true;
}
function print_result()
{var s=" ";
var i,j;
document.write("Answer ",++sum);
document.writeln(": (");
for(j=1;j<=n;j++) document.writeln(a[j]);
document.write(")<br>")
document.write("<table border=1 cellspacing=0>")
for(i=1;i<=n;i++)
{document.write("<tr>")
for(j=1;j<=n;j++)
{ if((i+j)%2!=0)
document.write("<td bgcolor=#C0C0C0><p align=center>");
else document.write("<td><p align=center>");
if (j==a[i]) document.write("Q");
else document.write(" ");
document.write("</td>");
}
}
document.write("</table>");
document.write("</br>");
}
document.write("Question Eight Queens answers.</br>")
document.write("Programmed by j.t.Chang.</br></br>")
for(i=1;i<=n;i++) a[i] = 0;
while(k>0) {
a[k]+=1;
while ((a[k]<=n)&&!place(k)) a[k]+=1;
if (a[k]<=n)
if(k==n) print_result();
else {
k++;
a[k]=0;
}
else k--;
}
document.write("sum = ",sum)
//-->
</script>
</html>

您所在位置: