Advertisement

07:画家问题MOOC程序设计与算法期末第七题

阅读量:

由N²块大小相等的小正方形组成的正方形墙面共有N×N块瓷砖(即每个墙面单位为一块小方块)。Bob是一位画家,在使用他的画笔时需要注意一个问题:每当他在第(i,j)位置进行涂抹时,在其上下左右四个相邻的位置(即坐标为(i−1,j),(i+1,j),(i,j−1),(i,j+1))的所有瓷砖都会发生颜色变化(从白色变为黄色或从黄色变为白色)。为了方便起见,在讨论时我们将每个墙面单位简称为一块瓷砖,并且不考虑超出墙面范围的情况(例如当i=0或j=0时的情况)。请帮助我们计算并确定一个策略使得Bob能够用最少的操作次数将整个墙面全部变为黄色瓷砖。

输入

第一行包含一个整数n (1≤n ≤15),代表墙的尺寸。以下列出墙的起始状态。每行由n个字符组成。位于位置(i,j)处的第i行第j个字符代表该处砖的颜色。

输出

在一列中,如果Bob能够完成所有砖块都被染成黄色的任务,则计算并输出所需最小化被涂黄的砖块数量;否则输出'inf'。

样例输入

复制代码
 5

    
 wwwww
    
 wwwww
    
 wwwww
    
 wwwww
    
 wwwww

样例输出

复制代码
    15 

首先, 遍历第一行的所有可能性, 并使用位操作来处理这些情况. 接着, 在后续的每一行中, 针对上一行同一列位置为白色方格的区域进行填充. 如果最终那

全部评论 (0)

还没有任何评论哟~