You need to enable JavaScript to run this app. HackerRank Designer Door Mat题算法通俗讲解及逻辑说明
优惠活动
大模型
产品
解决方案
定价
更多

HackerRank Designer Door Mat题算法通俗讲解及逻辑说明

Designer Door Mat 题解

核心规律推导(数学逻辑)

先明确题目给出的基础参数规则:

  • N为奇数,M=3*N
  • 图案上下完全对称,中心行固定为WELCOME字样
    我们可以把整个门垫拆成三部分分别推导规则:
  1. 行索引规则:总行数为N,中心行的索引为N//2(从0开始计数),中心行上方和下方各有N//2行
  2. 上半行(中心行以上)规则:
    对第i行(i从0到N//2 -1):
    • 中间.|.的数量为2*i + 1(i=0时1个,i=1时3个,逐行加2,和样例规律完全匹配)
    • 每个.|.占3个字符,因此中间图案部分总长度为3*(2*i +1)
    • 剩余字符全部用-填充,且需要左右对称,因此左右两侧-的数量为(M - 3*(2*i +1)) // 2
  3. 中心行规则:
    WELCOME固定长度为7,左右两侧-的数量为(M -7) //2
  4. 下半行规则:和上半行图案完全一致,仅倒序输出即可

Python代码实现

# 读取输入的N和M
n, m = map(int, input().split())

# 打印上半部分
for i in range(n//2):
    pattern_num = 2 * i + 1
    fill_len = (m - 3 * pattern_num) // 2
    print('-' * fill_len + '.|.' * pattern_num + '-' * fill_len)

# 打印中心WELCOME行
welcome_fill = (m - 7) // 2
print('-' * welcome_fill + 'WELCOME' + '-' * welcome_fill)

# 打印下半部分(倒序遍历上半部分的索引即可)
for i in range(n//2 - 1, -1, -1):
    pattern_num = 2 * i + 1
    fill_len = (m - 3 * pattern_num) // 2
    print('-' * fill_len + '.|.' * pattern_num + '-' * fill_len)

你可以用样例输入9 27测试,输出和题目给出的样例完全一致。

内容的提问来源于stack exchange,提问作者Rohan Shah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 14:24:11