資源描述:
《八皇后問題c,,報告》由會員上傳分享,免費在線閱讀,更多相關內容在應用文檔-天天文庫。
1、為了適應公司新戰(zhàn)略的發(fā)展,保障停車場安保新項目的正常、順利開展,特制定安保從業(yè)人員的業(yè)務技能及個人素質的培訓計劃八皇后問題c,,報告 XX年春季學期 《C項目設計》報告 題目:學號:姓名:組名:指導教師:日期: 八皇后問題劉澤中1宋東興 目錄 正文····················3 1.問題描述····················32.總體設計與分析·················33.相關代碼····················54.調試分析····················95.軟件使用說明書················
2、11 總結·····················11附錄:部分原程序代碼·············12 一、問題描述 1.八皇后問題:目的-通過該培訓員工可對保安行業(yè)有初步了解,并感受到安保行業(yè)的發(fā)展的巨大潛力,可提升其的專業(yè)水平,并確保其在這個行業(yè)的安全感。為了適應公司新戰(zhàn)略的發(fā)展,保障停車場安保新項目的正常、順利開展,特制定安保從業(yè)人員的業(yè)務技能及個人素質的培訓計劃 是一個古老而著名的問題。該問題是十九世紀著名的數(shù)學家高斯1850年提出:在8×8棋盤上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處于同一行、同一列或同一斜線上,問有多少種擺法?
3、2.解決八皇后問題的關鍵在于: 找到合理的數(shù)據(jù)結構存放棋子的擺放位置。要有合理的沖突檢查算法。采用的方法是,先把8個棋子擺在棋盤上,每行擺一個,然后去檢查這種擺放是否有沖突,如果沒有沖突,即找到了一種解決方案。 由于皇后的擺放位置不能通過某種公式來確定,因此對于每個皇后的擺放位置都要進行試探和糾正,這就是“回溯”的思想。在8個皇后未放置完成前,每行擺放一個皇后,擺放第i個皇后和第i+1個皇后的試探方法是相同的,因此完全可以采用遞歸的方法來處理?! 《⒖傮w設計與分析 1.設計效果 畫一個8*8的國際象棋盤,在棋盤某一位置上放一棋子,并讓它按從左到右的方向自動
4、運動,用戶可以使用光標鍵調整棋子運動的方向,找出所有可能的擺放方案,將包含指定的棋子的擺放方案找出并顯示出來。。2.、總體設計 程序總體分為兩大塊:八皇后擺法的尋找;棋盤及棋子的設計。 3、詳細模塊 八皇后擺法的尋找: intchess[8][8]={0};//二維數(shù)組表示8*8棋盤,全部清0,目的-通過該培訓員工可對保安行業(yè)有初步了解,并感受到安保行業(yè)的發(fā)展的巨大潛力,可提升其的專業(yè)水平,并確保其在這個行業(yè)的安全感。為了適應公司新戰(zhàn)略的發(fā)展,保障停車場安保新項目的正常、順利開展,特制定安保從業(yè)人員的業(yè)務技能及個人素質的培訓計劃 voidqueen(int
5、i,intn){//i表示從第i行起為后續(xù)棋子選擇合適位置,n代 表n*n棋盤 if(i==n) output(n);//輸出棋盤當前布局; else{ for(j=0;j #defineN8//定義棋盤的格數(shù),通過改變,也可以是4皇后,16皇后,9皇后什么的. intchess[N][N]={0};//棋盤 intcount=0;//有多少種放法 intcanput(introw,intcol)//確定某一格能不能放 { inti,j; for(i=0;i6、return0; } for(j=0;j7、
8、(i-row)==(col-j))&&chess[i][j]==1)//對角線上有的{ return0; } } } ret
9、urn1; } voidprint_chess()//打印放置的方案 { inti,j; for(i=0;i