ACM基础题 | 度度熊拼三角_HDU-6374(Java实现)

度度熊拼三角


Problem Description
度度熊有 N 根木棒,每根木棒的长度为a i
现在要挑选其中的三根,问能拼出的三角形的最大周长是多少。
如果不能拼成任何一个三角形,输出 −1。

Input
多组数据(不超过10组),读到EOF结束。
对于每一组数据:
第一行一个数 N 表示木棒数量。
第二行一共 N 个数,描述每一根木棒的长度。
1≤N≤1000
木棒长度都是不超过100000的正整数

Output
对于每一组数据,输出一个数表示答案。

Sample Input
3
1 1 100
7
1 9 9 90 2 2 4

Sample Output
-1
22

解题思路和注意事项

  • 首先将获取到的N个数据进行排序,可以将键盘录入的数据依次存入数组中,使用Arrays类中的sort方法进行排序(从小到大)。
  • 分析易得欲获取周长最长的三边应该从排序后的数组末端的三个元素开始,依次往前排除。
    ① 这里有个隐含的关键条件:构成最大周长的三角形一定是相邻的三边
    ② 构成三角形的条件为:两边之和大于第三边,两边之差小于第三边
    使第三边arr[i]与两边arr[i+1]及arr[i+2]进行比较,由arr[i+1]>arr[i]易得一定满足两边之和大于第三边,因此只需判断是否满足两边之差小于第三边

代码展示

import java.util.Arrays;
import java.util.Scanner;

public class Main{
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while(sc.hasNext()) {
			String s = sc.next();
			//判断输入是否为EOF,若是则退出程序
			if(s.equals("EOF")) {
				break;
			}
			int n = Integer.parseInt(s);
			//创建数组用于存键盘录入的数据
			//使用long是因为木棒长度都是不超过100000的正整数
			long[] arr = new long[n];
			for(int i = 0;i < arr.length;i++) {
				arr[i] = sc.nextLong();
			}
			//对数组arr从小到大排序
			Arrays.sort(arr);
			//设置一个标志用于判断是否存在一个三角形
			boolean flag = false;
			//外层循环用于循环每个三角形(一共arr.length-2个三角形)
			outer:for(int i = 0;i < arr.length - 2;i++) {
				//内层循环从数组最末端的三条边开始判断,以便快速找到最大周长三角形
				for(int j = arr.length - 1;j >=2;j--) {
					//判断两边之差是否小于第三边
					if( (arr[j] - arr[j - 1]) < arr[j - 2] ) {
						System.out.println(arr[j] + arr[j - 1] + arr[j - 2]);
						flag = true;
						break outer;  //若一旦找到一个三角形则退出所有循环,易得该三角形即为最大周长
					}
				}
			}
			//若没有三边可以组成三角形则输出-1
			if(flag == false) {
				System.out.println(-1);
			}
		}
	}
}

骚话时刻:
今天谈谈自己对兴趣的一点看法(纯属个人片面想法)
我听过一句话:把兴趣当成工作,你会毁了你的兴趣
其实我不这样认为,我只能说,我觉得这不是真正的兴趣,真正的兴趣是不会那么经不起考验的
我想说,如果大学那么多专业、社会上那么多工作中真的有你感兴趣的那一个,那么恭喜你,这是件非常幸运的事情
然而据我所知,大部分人都没有所谓真正感兴趣的专业或者工作,毕竟学习总是枯燥的,工作总是乏累的
我认识一个朋友,非常优秀,属实别人口中的大佬,正就读于上海某985,他每天的睡眠时间非常之少,熬夜是常态。(他几乎投入了所有时间学习,熬夜也是因为学习)
我问他是怎么坚持的?
他说他白天把课程作业什么乱七八糟的事情全做了,把感兴趣的想要学习的任务安排在夜晚,这样就能顺其自然地熬夜了,不累反而快乐
其实我猜他自己也不清楚最后让自己坚持下去的到底是不是兴趣,但确实是兴趣让他开始了这样做
他是我最佩服的人之一
后来我真的试过了,比如今天,把所有不喜欢学又迫不得已学的任务安排在白天,夜晚开始总结、更博,现在凌晨1:30,我丝毫没有困意
This is the power of interest.
如果没有什么感兴趣的事情,也不用担心,大部分人也跟你一样
也有一句话是这样说的:不要做你爱的,要爱你做的
其实越到后面越发现,你也不知道是不是感兴趣,但是你知道你要去做,想要去做,为了未来的生活
晚安
但是身体要紧身体要紧!多锻炼,该睡还是要睡的,不过该拼也是要拼的

表情包

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值