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

来源:互联网 发布:报名网站源码 编辑:程序博客网 时间:2024/05/20 18:45

题目描述
二货小易有一个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] = 1sum = 0for i in range(w):    for j in range(h):        sum += array[i][j]print(sum)
原创粉丝点击