遞迴 八皇后問題 C語言

2021-08-31 11:10:04 字數 1117 閱讀 8793

//統計一共有幾種

intnotdanger

(int row,

int j,

int(

*chess)[8

])}//判斷左上方

for(i=row,k=j; i>=

0&&k>=

0; i--

,k--)}

//判斷右下方

for(i=row,k=j; i<

8&&k<

8; i++

,k++)}

//判斷右上方

for(i=row,k=j; i>=

0&&k<

8; i--

,k++)}

//左下方

for(i=row,k=j; i<

8&&k>

0; i++

,k--)}

if(flag1 || flag2 || flag3 ||flag4 ||flag5)

return0;

else

return1;

}//row起始行 n列數 (*chess)[8]指向棋盤每一行的指標

void

eightqueen

(int row,

int n,

int(

*chess)[8

])}if

(8== row)

printf

("\n");

}printf

("\n");

}else*(

*(chess2+row)

+j)=1;

eightqueen

(row+

1,n,chess2);}

}}}int

main()

}eightqueen(0

,8,chess)

;printf

("總共有解決方法%d"

,count)

;return0;

}

八皇后問題 C 遞迴

最近在重新看遞迴,準備複試,剛好看到八皇后問題。遇到的問題主要有兩大方面 1.迴圈實現放皇后對相應方格的置1操作,要注意迴圈條件,考慮4種情況。2.遞迴中的迴圈邏輯。見 注釋。另外,由於進入遞迴起始的位置是給定的 0,0 需要在主函式內迴圈實現對第0行所有位置的遞迴求解。這一點也是看了好久,通過遞迴...

八皇后問題 遞迴

問題描述 在乙個8 8西洋棋盤上,有8個皇后,每個皇后佔一格 要求皇后間不會出現相互 攻擊 的現象,即不能有兩個皇后處在同一行 同一列或同一對角線上。問共有多少種不同的方法。程式 public void testeightprince 初始化,所有的位置都可以放置乙個皇后 for int x 0 x...

八皇后問題 遞迴

八皇后問題 遞迴 如何能夠在 8 8 的西洋棋棋盤上放置八個皇后,使得任何乙個皇后都無法直接吃掉其他的皇后?為了達到此目的,任兩個皇后都不能處於同一條橫行 縱行或斜線上。8 8的棋盤方格 每一行的某一列上要有乙個皇后 public class eightqueen 左上方 for int i 1 r...