首页 > 试题广场 >

圈地运动

[编程题]圈地运动
  • 热度指数:3064 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解

圈地运动,就是用很多木棍摆在地上组成一个面积大于0的多边形~

小明喜欢圈地运动,于是他需要去小红店里面买一些木棍,期望圈出一块地来。小红想挑战一下小明,所以给小明设置了一些障碍。障碍分别是:

1.如果小明要买第i块木棍的话,他就必须把前i-1块木棍都买下来。

2.买了的木棍都必须用在圈地运动中。

那么请问小明最少买多少根木棍,才能使得木棍围成的图形是个面积大于0多边形呢?

输入描述:
第一行一个数n,表示木棍个数。
第二行n个数,第i个数表示第i个木棍的长度ai
1<=n<=10000
1<=ai<=10000


输出描述:
输出一个数,表示最少需要的木棍个数,如果无解输出-1
示例1

输入

3
6 8 10

输出

3

说明

用三根6,8,10的木棍可以组成一个直角三角形的图形。
头像 张云超
发表于 2019-08-10 15:17:22
1. 思路 (1)最重要的一点: 构成多边形的条件: 其他边之和大于最长边 边数大于3 (2)根据题目要求可知,依次检索,达到条件就输出,时间复杂度O(n) (3)第i个点与前i-1个点,只有和的关系(其实是减去最大值的和),所以不需要。 2.在循环读入时所要记录的数据 前i项和sum 展开全文
头像 不摸了
发表于 2019-07-30 15:49:15
import java.util.Scanner; public class Main{     public static void main (String[]args){         Scanner in=new Scanner( 展开全文