[問題] 騎士走棋盤問題
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Visual C++
問題(Question):
出現詭異的現象
預期的正確結果(Expected Output):
這是一個走西洋棋盤的騎士的問題
是 C++ how to program的題目
可是我的騎士走一走卻會發生不按規則走的情形
不知道如何是好
錯誤結果(Wrong Output):
沒有照日字形走
偶爾會掉進無窮迴圈
程式碼(Code):(請善用置底文網頁, 記得排版)
http://pastie.org/2794322
補充說明(Supplement):
我覺得我的程式碼沒有問題
可是常常走一走騎士突然走歪
不知道為什麼...
並且有時候會掉進無窮迴圈..
其中我的陣列board是棋盤 初始直是0
0表示騎士可以走
走過了就出現counter的數字 表示走過了
只能走64次
然後check函數是檢查該格附近是否還有可以走的地方
若是沒有了則跳出迴圈
剛剛忘了補充
-------------------------------------------------
再補充一下 crr_row = current row
crr_col = current column
可以代表現在位子的變數
hori vert陣列用來存放走的方法
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.132.83.187
※ 編輯: steve1012 來自: 220.132.83.187 (11/02 01:11)
※ 編輯: steve1012 來自: 220.132.83.187 (11/02 01:12)
※ 編輯: steve1012 來自: 220.132.83.187 (11/02 01:16)
→
11/02 01:22, , 1F
11/02 01:22, 1F
→
11/02 01:23, , 2F
11/02 01:23, 2F
→
11/02 01:24, , 3F
11/02 01:24, 3F
好像不是要可能解
這題只要我模擬一次就好 可是我每次都失敗
中間騎士走的地方會亂跳 並不程日字型
※ 編輯: steve1012 來自: 220.132.83.187 (11/02 01:29)
→
11/02 01:37, , 4F
11/02 01:37, 4F
→
11/02 01:37, , 5F
11/02 01:37, 5F
ok這個我改掉了
我直接用
moves=rand()%8;
crr_row = moves;
crr_col=moves;
→
11/02 01:40, , 6F
11/02 01:40, 6F
→
11/02 01:40, , 7F
11/02 01:40, 7F
什麼意思 所以我有配check function避免發生全部走過的情形
我直接break跳出迴圈
推
11/02 01:44, , 8F
11/02 01:44, 8F
為什麼呢?我已經在前面的do-while做過才走過來的 出界應該已經不會發生了呀
※ 編輯: steve1012 來自: 220.132.83.187 (11/02 01:56)
→
11/02 01:56, , 9F
11/02 01:56, 9F
這樣要怎麼做邊界判斷呢 可否提點一下小弟
若是發現出界要怎麼辦
並且我還是不懂為何check時會出界 前面do while不是避免了這樣的情況嗎
※ 編輯: steve1012 來自: 220.132.83.187 (11/02 02:00)
推
11/02 02:00, , 10F
11/02 02:00, 10F
!!!!
了解了 那要怎麼改
※ 編輯: steve1012 來自: 220.132.83.187 (11/02 02:01)
→
11/02 02:02, , 11F
11/02 02:02, 11F
→
11/02 02:03, , 12F
11/02 02:03, 12F
真的很感謝您
我解決了困擾
真的好謝謝你!!!
原來盲點這麼恐怖
※ 編輯: steve1012 來自: 220.132.83.187 (11/02 02:06)