网址:点击打开链接
You are given a rectangular board of M × N squares. Also you are given an unlimited number of standard domino pieces of 2 × 1 squares. 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
题意:有m*n的矩形,问最多放多少个2*1的矩形,分组讨论,如果m=1或者n=1的,只能放n/2或者m/2,其他的分奇偶。
#include<stdio.h>
#include<algorithm>
using namespace std;
int main()
{
int m,n,t;
scanf("%d%d",&m,&n);
if(m==1)
{
printf("%d\n",n/2);
return 0;
}
if(n==1)
{
printf("%d\n",m);
}
if(m&1)
{
if(n&1)
{
t=max(m,n)*(min(m,n)/2)+max(m,n)/2;
}
else
{
t=n/2*m;
}
}
else
{
t=m/2*n;
}
printf("%d\n",t);
return 0;
}
本文探讨了一个经典的算法问题——如何在一个M×N的矩形板上放置尽可能多的2×1标准多米诺骨牌,使得每个多米诺骨牌完全覆盖两个方格且不重叠。文章提供了一种解决方案,并通过编程实现给出了具体的答案。
249





