八皇后代码java语言 八皇后 java( 四 )


//定义一个8皇后问题(有92组解)
cQueenQ1=new cQueen(8);//大于10 , 你的微机可能要死机!
//第一个皇后可以在任意一行布放
Q1.resolve(0);//参数在0到n-1之间任选
Q1.HowMany();
}
}//类Queen定义结束
关于看代码的人人都知道的小技巧,最小试探法来输出结果进行比较和分析
Java编程八皇后,但是第一个皇后是我们手动输入的该怎么编呢明天或后天给你代码
package algorithm;
public class Demo_3 {
/**八皇后问题:国际象棋棋盘有8行8列共64个单元格,在棋盘上放8个皇后 , 使其不能互相攻击,也就是说任意两个皇后不能处于同一行,同
* 一列或同一斜线上 。问共有多少种摆放方法 。每一种摆放方式是怎么样的?
* @param args
*/
static int count = 0;
static int[] location = new int[8];
public static void Output()
{
int i, j, flag = 1;
System.out.printf("第%2d种方案(Q表示皇后):\n", ++count);
System.out.printf("");
for(i = 1; i = 8; i ++)
{
System.out.printf("_");
}
System.out.printf("\n");
for(i = 0; i8; i ++)
{
System.out.printf(" |");
for(j = 0; j8; j ++)
{
if(location[i] - 1 == j)
{
System.out.printf("Q");//皇后的位置
}else
{
if(flag0)
{
System.out.printf(" ");//棋格
}else
{
System.out.printf("×");//棋格
}
}
flag = -1 * flag;
}
System.out.printf("| \n");
flag = -1 * flag;
}
System.out.printf(" ");
for(i = 1; i = 8; i ++)
{
System.out.printf("-");
}
System.out.printf("\n");
}
static void EightQueen(int n)//算法
{
int i, j;
int ct;//用于判断是否冲突
if(n == 8)//若8个皇后已放置完成
{
Output();//输出求解结果是
return;
}
for(i = 1; i = 8; i++)
{
location[n] = i ;//在该列的第i行上放置
//判断第n个皇后是否与前面皇后形成攻击
ct = 1;
for(j = 0; jn; j ++)
{
if(location[j] == location[n])//形成攻击
{
ct = 0;
}else if(Math.abs(location[j] - location[n]) == (n - j))//形成攻击的
{
ct = 0;
}
}
if(ct == 1)//没有冲突,就开始下一列的试探
{
EightQueen(n+1);//递归调用
}
}
}
public static void main(String[] args)
{
System.out.printf("八皇后问题求解!\n");
System.out.printf("八皇后排列方式:\n");
EightQueen(0);
}
}
关于八皇后代码java语言和八皇后 java的介绍到此就结束了 , 不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

推荐阅读