使用 Python 检查是否有任何(只有一个彩色单元格的)正方形可以被分成两等份


假设,我们得到一个大小为 n 的正方形。n 大小的正方形进一步被分成 n2 个更小的正方形。较小的正方形是单位大小,其中一个正方形用唯一的颜色着色。

现在,如果我们将较大的正方形分成两等份,我们必须以这样一种方式切割它,即切割线与那个唯一着色的较小正方形没有任何公共点。我们还必须考虑这样一个事实,即新切割的两块是彼此的镜像。因此,我们必须找出在给定条件下是否可以这样切割正方形。我们有 n 的值以及着色正方形在较大正方形中的位置。

因此,如果输入类似于 size = 50,colored_row_pos = 25,colored_col_pos = 25,则输出将为“无法切割”。

为了解决这个问题,我们将遵循以下步骤:

  • middle := size /2 的向下取整值
  • 如果 (middle 等于 colored_row_pos 或 middle 等于 colored_row_pos - 1) 且 (middle 等于 colored_col_pos 或 middle 等于 colored_col_pos - 1),则
    • 返回 False
  • 否则,
    • 返回 True

让我们看看下面的实现以获得更好的理解:

示例

 在线演示

def solve(size, colored_row_pos, colored_col_pos) :
   middle = size // 2
   if (middle == colored_row_pos or middle == colored_row_pos - 1) and (middle ==    colored_col_pos or middle == colored_col_pos - 1) :
      print("Cutting is not possible")
   else :
      print("Cutting is possible")
size = 50
colored_row_pos, colored_col_pos = 25, 25 
solve(size, colored_row_pos, colored_col_pos)

输入

50, 25, 25

Learn Python in-depth with real-world projects through our Python certification course. Enroll and become a certified expert to boost your career.

输出

Cutting is not possible

更新于: 2020-12-30

91 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告