不要二-网易python(找数据逻辑)

题目描述
二货小易有一个W*H的网格盒子,网格的行编号为0~H-1,网格的列编号为0~W-1。每个格子至多可以放一块蛋糕,任意两块蛋糕的欧几里得距离不能等于2。
对于两个格子坐标(x1,y1),(x2,y2)的欧几里得距离为:
( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) 的算术平方根
小易想知道最多可以放多少块蛋糕在网格盒子里。
输入描述:
每组数组包含网格长宽W,H,用空格分割.(1 ≤ W、H ≤ 1000)
输出描述:
输出一个最多可以放的蛋糕数
示例1
输入

3 2
输出

4

# 不要二 找数据逻辑
# 举个例子,就可以找出规律,是以4为周期重复出现的
# 1 1 x x 1 1
# 1 1 x x 1 1
# x x 1 1 x x
# x x 1 1 x x

# 首先,左上角一定是可以放置蛋糕的,然后因为题目要求任意两个蛋糕之间的欧几里得距离不能为2,
# 而对于整数坐标位置来说,欧几里得距离为2的情况下只有垂直或者水平距离为2,像斜对角的距离不可能为2的。
# 就此先简单推断第一行的蛋糕位置,假设1为可放置,0为不可放置,则第一行应该为:110011001100...,
# 因此可以看出是以4为一个周期,而纵方向也同样如此:110011001100...因此需要对横纵坐标依次遍历通过周期4进行判断,

w, h = map(int, input().split())

array = [[0 for k in range(h)] for m in range(w)]

# 整个纵向查找
for i in range(w):
    if i%4 == 0 or i%4 == 1:
        # 横向查找
        for j in range(h):
            if j%4 == 0 or j%4 == 1:
                array[i][j] = 1
    else:
        for j in range(h):
            if j%4 == 2 or j%4 == 3:
                array[i][j] = 1

sum = 0
for i in range(w):
    for j in range(h):
        sum += array[i][j]

print(sum)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值