编程之美之象棋将帅问题php实现
在象棋中,将帅只能在九宫格内走,不能走斜线,并且将帅不能见面。
问题是输出将、帅的所有合法位置。并且要求代码中只能使用一个变量。
输出合法位置并不困难,遍历一遍,将将帅不见面的情况下的位置输出就好。主要是只使用一个变量,这个是需要考虑的所在。
书中详细的给出了一种解决方式。大体是定义一个变量,变量长度为一个字节。由于将或帅仅在9个点的位置上,所以将一个字节分成前后4位,4位最大可以表示16个点,表示9个点没有问题。
用php来实现的话,实际不用这么麻烦,一个数组变量就可以解决了~
function jiangshuai() { $i = array(); for($i[0] = 1;$i[0] <= 9; $i[0] = $i[0] + 1) { echo "\r\n<br>"; for($i[1] = 1; $i[1] <= 9; $i[1] = $i[1] + 1) { if($i[0]%3 != $i[1]%3) { echo $i[0]; echo ' '; echo $i[1]; echo ' | '; } } } }