程序員面試例題_第1頁
程序員面試例題_第2頁
程序員面試例題_第3頁
程序員面試例題_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第第頁程序員面試例題

解析:遞歸實現(xiàn)n皇后問題。

算法分析:

數(shù)組a、b、c分別用來標記沖突,a數(shù)組代表列沖突,從a[0]~a[7]代表第0列到第7列。假如某列上已經(jīng)有皇后,那么為1,否那么為0。

數(shù)組b代表主對角線沖突,為b[i-j+7],即從b[0]~b[14]。假如某條主對角線上已經(jīng)有皇后,那么為1,否那么為0。

數(shù)組c代表從對角線沖突,為c[i+j],即從c[0]~c[14]。假如某條從對角線上已經(jīng)有皇后,那么為1,否那么為0。

代碼如下:

#include

staticcharQueen[8][8];

staticinta[8];

staticintb[15];

staticintc[15];

staticintiQueenNum=0;//記錄總的棋盤狀態(tài)數(shù)

voidqu(inti);

//參數(shù)i代表行

intmain()

{

intiLine,iColumn;

//棋盤初始化,空格為*,放置皇后的地方為@

for(iLine=0;iLine8;iLine++)

{

a[iLine]=0;//列標記初始化,表示無列沖突

for(iColumn=0;iColumn8;iColumn++)

Queen[iLine][iColumn]=*;

}

//主、從對角線標記初始化,表示沒有沖突

for(iLine=0;iLine15;iLine++)

b[iLine]=c[iLine]=0;

qu(0);

return0;

}

voidqu(inti)

{

intiColumn;

for(iColumn=0;iColumn8;iColumn++)

{

if(a[iColumn]==0b[i-iColumn+7]==0c[i+iColumn]==0)

//假如無沖突

{

Queen[i][iColumn]=@;

//放皇后

a[iColumn]=1;

//標記,下一次該列上不能放皇后

b[i-iColumn+7]=1;

//標記,下一次該主對角線上不能放皇后

c[i+iColumn]=1;

//標記,下一次該從對角線上不能放皇后

if(i7)qu(i+1);

//假如行還沒有遍歷完,進入下一行

else//否那么輸出

{

//輸出棋盤狀態(tài)

intiLine,iColumn;

printf(第%d種狀態(tài)為:,++iQueenNum);

for(iLine=0;iLine8;iLine++)

{

for(iColumn=0;iColumn8;iColumn++)

printf(%c,Queen[iLine][iColumn]);

printf();

}

printf();

}

//假如前次的皇后放置導致后面的放置無論如何都不能滿意要求,那么回溯,重置

Queen[i][iColumn]

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論