《C編程技巧:117個問題解決方案示例 》 —3.8 解決八皇后問題

      網友投稿 735 2025-04-03

      3.8 解決八皇后問題

      問題

      你想利用回溯法來解決八皇后問題。

      解決方案

      回溯法是一種通用算法,用于查找計算問題的一些或所有可能的解決方案。在回溯中,首先考慮所有可能的候選者(可能成功),然后丟棄無法成功的候選者。最后,只剩下那些成功解決問題的候選人。在國際象棋棋盤上,八個皇后的排列方式使得沒有皇后可以攻擊另一個皇后。一個成功的解決方案要求沒有兩個皇后在相同的行、列或對角線上。編寫一個C程序,依照以下規格說明使用遞歸來解決八皇后問題:

      定義名為queen()的函數。兩個int值將作為輸入參數傳遞給此函數:棋盤上的行號和棋盤上的皇后數(在本例中為8)。

      函數queen()以遞歸方式調用函數print()、函數place()以及函數queen()本身。

      函數place()檢查將皇后放置在棋盤上方格的可能性。如果一切正常,則返回1,否則,它返回0。

      函數print()在屏幕上顯示皇后的成功位置。

      以下是使用這些規格說明編寫的C程序的代碼。在文本編輯器中鍵入以下C程序,并將其保存在文件夾C:\Code中,文件名為queens.c:

      編譯并執行此程序。請注意,這個問題有92種成功的解決方案。執行開始時,屏幕上會顯示解決方案1,如此處所示。按Enter鍵,然后屏幕上顯示解決方案2。如果你對查看所有92種解決方案不感興趣,只需按住Enter鍵并保持幾秒鐘即可。

      這個程序的運行結果在這里給出:

      工作原理

      LOC 5~10定義main()函數。在LOC 7中,int變量p的值設置為8,因為棋盤上的皇后數是8。在LOC 8中,調用函數queen()。queen()的第一個參數是int值1,它表示第1行,queen()的第二個參數是int變量p,p的值設置為int值8(即棋盤上的皇后個數)。LOC 47~61定義了函數queen()。函數queen()調用函數place()來檢查放置情況(正在考慮中)對于皇后是否安全。如果一切正常,則place()返回1,一旦找到了皇后的一種成功放置情況,那么函數queen()調用函數print()來在屏幕上顯示成功的放置情況,如LOC 56所示。在LOC 58中,函數queen()遞歸調用自己,進一步調查正在考慮的放置情況。

      《C編程技巧:117個問題解決方案示例 》 —3.8 解決八皇后問題

      c語言 C 語言

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:智能客服系統中心(智能客服在線系統)
      下一篇:WPS表格技巧快速計算折扣(wps表格怎樣自動打折)
      相關文章
      亚洲毛片基地日韩毛片基地| 久久被窝电影亚洲爽爽爽| 久久久综合亚洲色一区二区三区| 亚洲?V无码成人精品区日韩| 亚洲欧美成人一区二区三区| 亚洲免费视频网址| 亚洲欧洲精品久久| 亚洲国产美女精品久久久久| 亚洲精品美女久久久久| 人人狠狠综合久久亚洲婷婷| 亚洲一区无码精品色| 国产成人毛片亚洲精品| 久久精品国产精品亚洲| 亚洲熟妇av一区二区三区漫画| 久久影视综合亚洲| 国产亚洲精品资源在线26u| 亚洲精品狼友在线播放| 在线观看国产区亚洲一区成人 | 2048亚洲精品国产| 亚洲成AⅤ人影院在线观看 | 亚洲午夜免费视频| 久久精品国产亚洲av水果派| 亚洲国产精品久久久久婷婷老年| 亚洲欧洲第一a在线观看| 91亚洲导航深夜福利| 亚洲精品人成电影网| 亚洲午夜精品在线| 亚洲精品一二三区| 亚洲heyzo专区无码综合| 另类专区另类专区亚洲| 偷自拍亚洲视频在线观看| 国产成人亚洲精品播放器下载| 亚洲国产成人久久一区WWW| 激情综合色五月丁香六月亚洲| 久久亚洲综合色一区二区三区| 亚洲成人动漫在线| 亚洲不卡视频在线观看| 亚洲乱亚洲乱妇24p| 亚洲精品乱码久久久久久不卡| 精品亚洲综合在线第一区| 久久综合亚洲色一区二区三区 |