首页 > 试题广场 >

圈地运动

[编程题]圈地运动
  • 热度指数:3054 时间限制: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的木棍可以组成一个直角三角形的图形。
n = int(input())
l = list(map(int,input().split()))

for i in range(2,n):
    a = max(l[:i+1])
    b = sum(l[:i+1]) - a
    if b - a <= 0:
        if i == n -1:
            print(-1)
            break
        continue
    else:
        print(i+1)
        break

发表于 2019-08-17 12:33:55 回复(0)
Python版本
n = int(input())
nums = [int(x) for x in input().split()]
for i in range(2,n):
    total = sum(nums[0:(i+1)])
    maxi = max(nums[0:(i+1)])
    minus = total - maxi*2
    if minus > 0:
        result = i + 1
        break 

try:
    print(result)
except:
    print("-1")


发表于 2019-08-15 16:26:47 回复(0)