请参照书P13-18.
题目可以在这里下载到:http://download.youkuaiyun.com/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循环的值。即:
在这里等同于