皇后棋 牌地下迷宫里的棕色怪物

    你可能知道象棋怎么下以及皇后嘚移动规则当两个皇后在同一行、同一列或同一条斜线上时,她们就会互相攻击假设两个这样的皇后(一黑一白)被放在一个2×2的棋盤上,她们可以有12种互相攻击的方式请看下图:

给出一个N×M的棋盘,计算有多少种放法能使两个皇后互相攻击

    输入至多包含5000行。每一荇有两个非负整数N、M(0<M, N≤106)输入以两个N=M=0为结束标志,这一行不需要处理

    对于输入的每一行,输出一行这一行包含一个整数,它表示放法的种数所有的输出数据都在带符号的64位整数内。

    首先皇后间攻击当且仅当她们在同一行、同一列或同一斜线。对于每一个不同的位置放置的方案都是不同的,也就是说每一种方案间都没有交集,因此我们可以用加法原理来解决。

    那么我们可以分三种情况讨論:皇后在同一行、同一列和同一斜线。这里规定m>n这样就省去了讨论m≤n,并且规定m为列数n为行数。

(I)皇后在同一行这种情况很容易想:若一个皇后放了一个位置,则另一个皇后只有(m-1)种放法∴总放法为mn(m-1)。

(II)皇后在同一列这种情况也很容易想:若一个皇后放了一个位置,則另一个皇后只有(n-1)种放法∴总放法为mn(n-1)。

(III)皇后在同一斜线上这种情况就有点复杂了。我们来详细讨论下:

    首先我们把棋盘斜斜地切成┅条条(先定一个方向,因为另一个方向是对称的)接着,我们考虑一个问题——假设一条斜线长度为len即这条斜线有len个格子,那么當我们放了一个皇后之后,就剩下(len-1)个位置可以放所以,每一条斜线的放置方案数为len×(len-1)

    然后,我们再来算总方案数假设我们切的方向昰“/”,那么左上角的斜线有长度为1, 2, 3, …, n-1的,所以方案总数为Σ[i(i-1)] (1≤i≤n-1)注意到了吗?右下角有一模一样的情况所以这里的方案总数也昰Σ[i(i-1)] (1≤i≤n-1)。

n-2)这就是最终的公式。

}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信