| 我就10*10方阵,谈谈最少步编程解题思路: 1. 建立坐标,F(n,m)表示第n行第m列的灯的状态,0表示灭,1表示亮。
 2. 用 S(n,m)表示对 第n行第m列的灯是否进行点灯操作,0表示不操作,1表示操作1次。(最少步数,不可能对同一个灯进行2次以上的操作,因为点2次和不点对整个灯的状态是没有影响)。
 3. 根据所有灯的初始状态,设置F(n,m)的初始值。
 4. 先对第一行 S(1,m)的值进行穷举( 比如采用10位2进制数,从0000000000开始逐渐穷举到1111111111),计算F(1,m)=  F(1,m)+S(1,m)+S(1,m+1)+S(1,m-1)。这样为了使第一行的F(1,m)都等于1,S(2,m)的值唯一确定,S(2,m)确定后,F(2,m)的值也确定,接着确定S(3,m)......
 最后若F(10,m)都等于1,那么就得到点灯的整个方案:
 S(1,1)    S(1,2)    S(1,3)    S(1,4)    S(1,5)    S(1,6)    S(1,7)     S(1,8)   S(1,9)    S(1,10)
 S(2,1)    S(2,2)    S(2,3)    S(2,4)    S(2,5)    S(2,6)    S(2,7)    S(2,8)    S(2,9)    S(2,10)
 S(3,1)    S(3,2)    S(3,3)    S(3,4)    S(3,5)    S(3,6)    S(3,7)    S(3,8)    S(3,9)    S(3,10)
 S(4,1)    S(4,2)    S(4,3)    S(4,4)    S(4,5)    S(4,6)    S(4,7)    S(4,8)    S(4,9)    S(4,10)
 S(5,1)    S(5,2)    S(5,3)    S(5,4)    S(5,5)    S(5,6)    S(5,7)    S(5,8)    S(5,9)    S(5,10)
 S(6,1)    S(6,2)    S(6,3)    S(6,4)    S(6,5)    S(6,6)    S(6,7)    S(6,8)    S(6,9)    S(6,10)
 S(7,1)    S(7,2)    S(7,3)    S(7,4)    S(7,5)    S(7,6)    S(7,7)    S(7,8)    S(7,9)    S(7,10)
 S(8,1)    S(8,2)    S(8,3)    S(8,4)    S(8,5)    S(8,6)    S(8,7)    S(8,8)    S(8,9)    S(8,10)
 S(9,1)    S(9,2)    S(9,3)    S(9,4)    S(9,5)    S(9,6)    S(9,7)    S(9,8)    S(9,9)    S(9,10)
 S(10,1)  S(10,2)  S(10,3)  S(10,4)  S(10,5)  S(10,6)  S(10,7)  S(10,8)  S(10,9)  S(10,10)
 |