你要在一个nxm的格子图上涂色,你每次可以选择一个未涂色的格子涂上你开始选定的那种颜色。同时为了美观,我们要求你涂色的格子不能相邻,也就是说,不能有公共边,现在问你,在采取最优策略的情况下,你最多能涂多少个格子?
给定格子图的长n和宽m。请返回最多能涂的格子数目。
只有一种颜色,要想不相邻,每行一个隔一个涂色即可,如果行数或者列数为偶数,最多的格子即为(m/2)*n或者(n/2)*m,显然就是m*n/2
如果行列均不为偶数,假设多加一列,则最大格子就为((n+1)/2)*m,然后需要减去多加的格子数为(m-1)/2,两式合并即为(n*m+1)/2。
class Paint {
public:
int getMost(int n, int m) {
// write code here
return (n*m+1)/2;
}
};