第十四题:水晶球
首先有一点很重要:决定球的大小的不是长方体的体积,而是长方体的最短边
要实现这一点,我们先要找出最短边,所以我们将a,b,c按照降序排列
所以我们要找最短边中的最大值
因为k=1或k=2,所以我们分情况讨论并且存储起来最后在比较是否需要合并
k=1时:我们按照c 降序排列,这样就找到了最短边的Max以及对应的球的编号(这需要我们在结构体中设置编号
k=2时:我们合并的目的是加长最短边,如果我们合并的两边之中包含最短边c,合并之后实际上没有增加c的长度,这样做是没有用的,所以我们应当合并的是a,b两边,所以我们按照a,b,c的优先级进行降序排列,然后遍历相邻的两个,看他们的a,b是否相同即可
这里我又犯了一个小错误:
(h2是记录最小边的长度)
如果我们先比较c1+c2>h2的话(这里采用的方法同“找最大值”)
我们就将编号已经赋给了c1与c2,但是我们还要确定b与c的大小关系,如果b
所以应该先min(b,c1+c2),再与h2作比较
最后比较h1,h2即可;