可能是你沒(méi)有控制好就結(jié)束了。

創(chuàng)新互聯(lián)建站致力于網(wǎng)站建設(shè),網(wǎng)站制作設(shè)計(jì),營(yíng)銷(xiāo)網(wǎng)頁(yè)按需網(wǎng)站制作,外貿(mào)網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),小程序開(kāi)發(fā),網(wǎng)站SEO優(yōu)化,網(wǎng)站設(shè)計(jì)制作案例豐富,是成都做網(wǎng)站公司和建站公司,歡迎咨詢(xún)。
下面是我的java代碼。你可以參考下。
private static int m = 0; // 計(jì)算種數(shù)
private static int n; //n皇后
public static void main(String[] args) {
System.out.println("請(qǐng)輸入皇后數(shù)n(n=4)");
n = new Scanner(System.in).nextInt();
int a[] = new int[n]; // 用一位數(shù)組來(lái)存放皇后的位置,下標(biāo)為行,值為列 。(如a[1] =
// 2,就是指第1行的二列有個(gè)皇后)
f(a, 0);
}
private static void f(int[] a, int i) {
if (i == n) { // 當(dāng)找到八個(gè)皇后輸出
sc(a);
}
for (int j = 0; j a.length; j++) {
if (fs(a, i, j)) { // 判斷這個(gè)位置能不能放皇后
a[i] = j;
f(a, i + 1); // 遞歸調(diào)用自己
}
}
}
private static boolean fs(int[] a, int i, int j) {
for (int k = 0; k i; k++) {
if (j == a[k] || (k + a[k]) == (i + j) || (a[k] - k) == (j - i)) // 判斷列、主對(duì)角、副對(duì)角上有沒(méi)有皇后
/段升巧/ (因?yàn)槭且恍行信袛嗟模孕胁挥门袛啵?/p>
return false; // 如果笑手列、主對(duì)角、副對(duì)角上有皇后,返回false
}
return true; // 當(dāng)循環(huán)執(zhí)行完都沒(méi)返回false或沒(méi)有執(zhí)行for,那就可以確定這個(gè)位置可以握鍵放皇后
}
private static void sc(int[] a) {
System.out.println("第" + (++m) + "種情況:");
for (int i = 0; i a.length; i++) {
for (int j = 0; j a.length; j++) {
if (a[i] == j)
System.out.print("Q ");
else
System.out.print(". ");
}
System.out.println();
}
System.out.println("---------------");
}
網(wǎng)頁(yè)題目:n皇后實(shí)驗(yàn)java代碼 n皇后 java
轉(zhuǎn)載注明:http://chinadenli.net/article30/dspjiso.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、云服務(wù)器、網(wǎng)站導(dǎo)航、自適應(yīng)網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)