腾讯笔试题,木棍组成多边形判断

 1 package com.qyz.test;
 2 
 3 import java.util.ArrayList;
 4 import java.util.Collections;
 5 import java.util.List;
 6 import java.util.Scanner;
 7 
 8 public class Solution {
 9 
10     public static void main(String[] args) {
11         
12         Scanner s = new Scanner(System.in);
13         
14         int n = s.nextInt();
15         
16         List<Integer> ls = new ArrayList<Integer>();
17         
18         while(n-- > 0){
19             //表示操作类型
20             int o = s.nextInt();
21             //木棍长度
22             int l = s.nextInt();
23             //根据操作对集合增删
24             if(o == 1)
25                 ls.add(l);
26             else if(o == 2)
27                 //注意,remove有两种实现,一种是删除指定位置,一种是删除第一次出现的元素
28                 ls.remove(new Integer(l));
29             else{
30                 System.out.println("ERR!!!");
31                 break;
32             }
33             int len = ls.size();
34             //集合长度小于3不能构成多边形
35             if(len < 3){
36                 System.out.println("No");
37                 continue;
38             }
39             //对集合进行排序,升序
40             Collections.sort(ls);
41             int sum = 0;
42             //计算除最后一个元素(最大元素)的和
43             for(int i = 0;i < len - 1;i++)
44                 sum += ls.get(i);
45             
46             if(sum <= ls.get(len-1))
47                 System.out.println("No");
48             else
49                 System.out.println("Yes");
50         }
51         s.close();
52         
53     }
54 
55 }

 

该题组要在于对多边形的长度判断,其实很简单,只要有三条线段及以上,且最大边长度小于其余各边的长度和,就可以构成多边形了,添加进list,然后排个序,就可以判断了。

 

posted @ 2016-09-22 08:57  斯巴达之狐  阅读(377)  评论(0编辑  收藏  举报