360第一题木棍咋做呀?跪求思路

通过18%

#360公司##笔试题目#
全部评论
试着输出3,通过率0.36,输出4,通过率0.55,输出5,通过率0.09,加一起正好1,然后分别判断能否构成三角形,四边形,五边形,然后就AC了…………
点赞 回复 分享
发布于 2018-09-17 22:25
n = int(input()) nums = [int(i) for i in input().split()] if n < 3: print(-1) else: i = 3 while i <= n and max(nums[:i]) >= sum(nums[:i]) - max(nums[:i]): i += 1 res = -1 if i > n else i print(res)
点赞 回复 分享
发布于 2018-09-17 22:00
n-1条最短边之和大于第n条边,那么这n条边就能组成n边形。然后遍历,记录最长边max和所有边长之和sum,若sum-max>max则返回当前边数。PS:n>2时打印3否则打印-1能通过27%。
点赞 回复 分享
发布于 2018-09-17 21:25
找出前n个中最大的,求其他的和,若和>最大值,则符合要求 #include<bits/stdc++.h> using namespace std; int main(){     int n;     while(cin>>n){         priority_queue<int> que;         vector<int> vec;         for(int i = 0;i<n;i++){             int x;             cin>>x;             vec.push_back(x);         }         bool flg = false;         que.push(vec[0]);         que.push(vec[1]);         int sum = vec[0]+vec[1];         int maxx = que.top();         for(int i = 2;i<vec.size();i++){             que.push(vec[i]);             sum+=vec[i];             maxx = que.top();             if(sum-maxx>maxx){                 cout<<i+1<<endl;                 flg = true;                 break;             }         }         if(!flg)             cout<<-1<<endl;     }     system("pause");     return 0; }
点赞 回复 分享
发布于 2018-09-17 21:25

相关推荐

06-15 18:44
黄淮学院 Java
Lynn012:如果是居民楼还是算了吧,看着有点野呢
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务