讀《編程之美》有感—中國象棋將帥問題

請參照書P13-18.

 

題目可以在這裏下載到:http://download.csdn.net/source/3126643

題目是這樣的:

在書中給出了這樣的一個解法,卻沒有給出對這個解法的詮釋,這裏就對這個解法闡述一下自己的個人觀點。

 


對於任意的一個數,我們可以得到這樣的一個公式:

a = (a/9)*9 +(a%9)

設 b = a/9; c = a%9;,於是得到:

a= b*9 + c

其中b用於表示"將"的位置,從0開始;c用於表示"帥"的位置,從0開始;

因此: i / 9 % 3 == i % 9 % 3 這個操作,實際上就b%3 == c%3,也就是比較"將"和"帥"的位置是否在同一條直線上了。

a--操作首先減少c值,當c值爲0時,b值才減1,c值恢復爲9;這樣的一個操作就兩個for循環的結果一樣了,先減少裏面那個for循環的值,然後再減少外邊的for循環的值。即:

 

在這裏等同於

 

發佈了30 篇原創文章 · 獲贊 15 · 訪問量 35萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章