You are given a rectangular board of M × N squares. Also you are given an unlimited number of standard domino pieces of 2 × 1squares. You are allowed to rotate the pieces. You are asked to place as many dominoes as possible on the board so as to meet the following conditions:
1. Each domino completely covers two squares.
2. No two dominoes overlap.
3. Each domino lies entirely inside the board. It is allowed to touch the edges of the board.
Find the maximum number of dominoes, which can be placed under these restrictions.
In a single line you are given two integers M and N — board sizes in squares (1 ≤ M ≤ N ≤ 16).
Output one number — the maximal number of dominoes, which can be placed.
2 4
4
3 3
4
棋盘摆牌问题。
完整代码:
/*30ms,0KB*/
#include<cstdio>
int main(void)
{
int m, n;
scanf("%d%d", &m, &n);
printf("%d", (n >> 1)*m + (n & 1 ? m >> 1 : 0));
return 0;
}

本文介绍了一个经典的棋盘摆牌问题,目标是在一个M×N的矩形棋盘上放置尽可能多的2×1标准多米诺骨牌,且骨牌不能重叠,并完全覆盖两个方格。文章提供了一个高效的解决方案,通过简单的数学运算即可得出最多能放置多少块多米诺骨牌。
329

被折叠的 条评论
为什么被折叠?



