請參照書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循環的值。即:
在這裏等同於