首页 > 试题广场 >

圈地运动

[编程题]圈地运动
  • 热度指数: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的木棍可以组成一个直角三角形的图形。
通过率70%, 哪位大佬可以看一下哪里出错了啊。找不到原因

import java.lang.System;
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] gun = new int[n];
        for(int i =0; i<n; i++){
            gun[i]=sc.nextInt();
        }
    
        if(n<3){
            System.out.println(-1);
        }
        int sum=0;
        int max=0;
    
        int result=-1;
        
        for(int j = 0; j<n; j++){
            sum +=gun[j];
            max = Math.max(max, gun[j]);
            if(j>2 && sum>(2*max)){
                //System.out.println(j+1);
                result =j+1;
                break;
            }
        }
        System.out.println(result);
}}
发表于 2020-08-22 02:40:57 回复(0)