北理工小学期程序设计题解

第十四题:水晶球
首先有一点很重要:决定球的大小的不是长方体的体积,而是长方体的最短边

要实现这一点,我们先要找出最短边,所以我们将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即可;

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值