笔试(京东):Box 判断6个面能否构成长方体

2020京东测试岗暑期实习生4.18场编程题第一题
题目分选择30道(60)和编程两道(40)
1.题目

给定6个矩形的长和宽wi和hi(1<=w, hi <= 1000),判断它们能否构成长方体的六个面。

输入

2
1345 2584
2584 683
2584 1345
683 1345
683 1345
2584 683
1234 4567
1234 4567
4567 4321
4322 4567
4321 1234
4321 1234

输出

POSSIBLE
IMPOSSIBLE

2.思路如下:
其实只需要找到构成长方体的条件即可
长方体共有12条边,分别为长a、宽b、高c,均出现4次,这是最普通的长方体,还要考虑长宽高互相相等的情况,总之判断边出现的次数是否满足以下三种情况即可
(1)a≠b≠c 12条边中等价于三个数,均出现四次
(2)a,b,c中存在两者相等 比如a=b≠c 12条边等价于两个数,分别出现4次、8次
(2)a=b=c 三边相等,12条边相当于一个数出现12次
满足任一种情况即可,构成长方体

3.代码如下

import sys

n = int(input())
s = []
for line in sys.stdin:
    tempstr = line.split()
    s.extend(tempstr)
# 建立字典统计每条边出现次数
c = dict()
for i in b:
    if i in c:
        c[i]+=1
    else:
        c[i]=1
 # 长宽高都不同 3个数字 出现次数为4  长宽高有两个相同 共有2个数字 出现次数为4,8  长宽高都相同
# 将出现次数存入数组  不需要考虑哪条边是长,哪条边是宽
num = []
for value in c.values():
    num.append(value)
if (len(num)==1)or((len(num)==2)and max(num)==8)or((len(num)==3)and max(num)==4):
    print ('POSSIBLE')
else:
    print ('IMPOSSIBLE')

ps:读了题感觉不难结果就是做不对,状况百出,可能18号不宜做题
一开始我只考虑了长宽高不等这一种情况
其实不需要区分哪条边做长做宽做高,只需要确定这组数能否构成即可
思考 如果需要输出长宽高那程序要咋个改嘞

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值