从N个整数中判断是否有三个整数能组成三角形

2023-11-10

解决这个问题,可以用斐波那契数列(Fibonacci sequence)

原因

  • 斐波那契数列中的数是不可能组成三角形的。
  • 而我们只要在这些数列里面加一个数就可以有一个三角形可以组成

有了这个原因我们就可以写一个非常快速就可以判断出结果的函数。

如果题目限制了N个整数的数据大小不能超过int型。那么我们算出斐波那契数列哪一项大于int的范围。

int 大于0的范围:0~2147483647

斐波那契数列第47项超过int

所以假设输入的n有46个,这时候还没有超过int ,所以小于46的都要判断。

当如果大于等于47个,由于第47个已经大于了int了,所以不可能取第47个,所以此时一定会有一个数,不是斐波那契数列中的数,此时就一定会有三个整数可以组成一个三角形。

 

以下给出代码

#include<iostream>
#include<algorithm>
using namespace std;

int a[1000];//存一堆整数

int main()
{
	//关闭cin同步,此时速度会比scanf()还快。而且输入方便 
	std::ios::sync_with_stdio(false);
	int n;cin>>n;

	int flag=0;

	for(int i=0;i<n;i++)
	     cin>>a[i];

	if(n>=47) 
	{ 
		flag=1;
		cout<<"YES";
	} 
	else
	{
		//这个排序是快排,排序后,前两项相加大于第三项一定可以组成一个三角形。
		sort(a,a+n);
		
		for(int i=0;i<n-2;i++)//前两项之和大于第三项的判断。
		{
			if(a[i]+a[i+1]>a[i+2])
			{
				cout<<"YES";
				flag=1;
				break;
			}
		}
	}
	
	if(flag==0)cout<<"NO";
	return 0;
}

 

原创文章,如有错误请指出,谢谢。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从N个整数中判断是否有三个整数能组成三角形 的相关文章

随机推荐

  • html如何添加环绕标签,html给定标签选项并添加标签(附代码)

    这篇文章给大家介绍的内容是关于html给定标签选项并添加标签 附代码 有一定的参考价值 有需要的朋友可以参考一下 希望对你有所帮助 HTML haveTags addTags 返回的数组 CSS havetags span addtags
  • ctfshow 萌新web系列--3

  • Linux shell判断含有通配符的文件是否存在

    方法一 使用 ls jpg gt dev null 命令 if ls jpg gt dev null then echo 当前文件夹下 未找到 jpg文件 else echo 当前文件夹下 存在 jpg文件 fi 方法二 使用 ls jpg
  • Descriptors cannot not be created directly

    1 Descriptors cannot not be created directly 在运行诸如深度学习python等程序时 如mmdetection mmdetection3d中的程序 会出现报错 Descriptors cannot
  • 后氧传感器正常数据_氧传感器电压多少正常?氧传感器数据流分析介绍

    氧传感器作用是什么 氧传感器用以检测排气中氧的浓度 并向ECU发出反馈信号 再由ECU控制喷油器喷油量的增减 从而将混合气的空燃比控制在理论值附近 氧传感器是利用陶瓷敏感元件测量汽车排气管道中的氧电势 由化学平衡原理计算出对应的氧浓度 达到
  • Redis启动与关闭

    安装redis之后 在命令行窗口中输入 redis server redis windows conf 启动redis 关闭命令行窗口就是关闭 redis redis作为windows服务启动方式 redis server service
  • Xilinx_RAM_IP核的使用

    Xilinx RAM IP核的使用 说明 单口RAM 伪双口RAM 双口RAM的读写 以及RAM资源占用的分析 环境 Vivado2018 3 IP核 Block Memory Generator 参考手册 UG473 7 Series F
  • 人力资源平台项目总结(2)

    目录 1 路由和页面 1 1 左侧菜单的显示逻辑 设置菜单图标 重点 2 组织架构 2 1 认识组织架构 2 2 将树形的操作内容单独抽提成组件 2 3 获取组织架构数据 并进行树形处理 重点 2 4 删除部门功能实现 2 5 新增部门功能
  • 使用presto+airpal+hive打造即席查询工具

    0X01 前言 即席查询怎么做 怎么选型 这次用的是presto来做尝试 缘起 公司是Impala的深度用户 我主要负责Impala的各方面的工作 最近因为一些特殊原因需要对现有的体系进行一些调整 需要做出来即席查询的组件 在spark s
  • 基于matlab的多元线性回归分析

    二 多元线性回归原理 2 1 数学模型 在社会生活及生产实践中会经常遇到一种问题 即我们非常关注一个量的变化 而这个量受到另一个或是多个因素的影响 我们想要了解这些因素是如何影响我们最为关注的这个量的以及这些因素对我们最为关注的这个量的影响
  • 【C语言进阶】实现atoi函数

    1 函数介绍 atoi的函数功能 将string所指向数字字符串转化为整数 注意 1 会跳过前面的空白字符 例如空格 tab缩进 等 2 如果不能转换成 int 或者为空字符串 那么将返回 0 特别注意 该函数要求被转换的字符串是按十进制数
  • 数字图像处理-小波变换小白解释基本原则

    内容完全转载 小波理论的基本概念及概述 第二版 欢迎阅读此份关于小波变换的入门教程 小波变换是一个相对较新的概念 其出现大约是在20世纪80年代 但是有关于它的文章和书籍却不少 这其中大部分都是由数学专业人士写给其他同行看的 不过 仍然有大
  • Java解析cron表达式

    概述 Cron表达式是一个字符串 以5或6个空格隔开 分为6或7个域 每一个域代表一个含义 即两种语法格式 Seconds Minutes Hours DayofMonth Month DayofWeek Year 即 秒 分 时 天 月
  • rp学习1---web页面左侧导航栏收缩

    一 首先使用几个矩形框将所有的导航栏按照需要和层级画出来 如下 二 将父菜单和子菜单分别转化为动态面板 具体转化动态面板方式如下 选择要转为面板的部分 如两个子菜单 鼠标画框框住两个菜单即可 会将框内的所有内容作为一个面板 右击 三 选择父
  • 算法训练营第三十二天(8.16)

    目录 Leecode 435 Non overlapping Intervals Leecode 763 Partition Labels Leecode 56 Merge Intervals Leecode 435 Non overlap
  • pycharm问题求解

    为什么我的pycharm下面会弹出在 init 中找不到某个函数 我不知道在哪里设置了这个就都成这个样子了 重新安装一个模组可以暂时解决这个问题 但是切个屏就又变成这样了 正常的好像是这样的 求解
  • graph 图数据结构

    树 和 图 辨析 1 树的父节点和子节点之间是一条路单向可达 2 图的的节点之间存在多条路可达 基本概念 1 顶点 2 边 3 邻居节点 只有一条边连接的顶点 4 度 degree 一个顶点有几条边 就有几度 图的区分 1 无向图 边没有方
  • 【Shell】expect解决脚本中交互时自动输入的问题

    日常和shell相关的工作中 经常遇到要在脚本中连接其他服务器进行文件传输等操作 这些命令通常会要求和用户交互输入验证 信息 那么在脚本中如何实现自动输入口令之类的信息 这里就要用到expect 以ubuntu20为例 首先要安装这个软件
  • Unity Animancer插件(三)运动

    一 根运动 Animancer的根运动系统与原生的工作原理完全相同 但我们可以通过继承Transition类型或实现ITransition接口 来将额外的数据与动画绑定 从而更方便地控制根运动 在下面这个示例中 我们通过自定义的Transi
  • 从N个整数中判断是否有三个整数能组成三角形

    解决这个问题 可以用斐波那契数列 Fibonacci sequence 原因 斐波那契数列中的数是不可能组成三角形的 而我们只要在这些数列里面加一个数就可以有一个三角形可以组成 有了这个原因我们就可以写一个非常快速就可以判断出结果的函数 如