您的位置:首页 > 其它

【刷题之路】 涂色问题

2016-06-12 10:10 176 查看
你要在一个nxm的格子图上涂色,你每次可以选择一个未涂色的格子涂上你开始选定的那种颜色。同时为了美观,我们要求你涂色的格子不能相邻,也就是说,不能有公共边,现在问你,在采取最优策略的情况下,你最多能涂多少个格子?

给定格子图的长n和宽m。请返回最多能涂的格子数目。

只有一种颜色,要想不相邻,每行一个隔一个涂色即可,如果行数或者列数为偶数,最多的格子即为(m/2)*n或者(n/2)*m,显然就是m*n/2

如果行列均不为偶数,假设多加一列,则最大格子就为((n+1)/2)*m,然后需要减去多加的格子数为(m-1)/2,两式合并即为(n*m+1)/2

又由int除法特性,可以将两式合并为(n*m+1)/2,即为所求

class Paint {

public:

    int getMost(int n, int m) {

        // write code here

        return (n*m+1)/2;

    }

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  刷题 智力题