三角形
来源:互联网 发布:winform三层架构源码 编辑:程序博客网 时间:2024/05/04 22:39
题目描述:
有n根棍子,棍子的长度为a,想要从中选出3根棍子组成周长尽可能长的三角形
约束条件:
3<= n <= 100
1 <= ai <= 10^6
思路:
组成三角形的充要条件:最长边长<另外两边长之和
(1)直接枚举:O(n^3)
#include <iostream>#include<algorithm>using namespace std;int main(){ int n,a[105]; while(cin>>n){ for(int i=0;i<n;i++){ cin>>a[i]; } int ans=0; for(int i=0;i<n;i++){ for(int j=i+1;j<n;j++){ for(int k=j+1;k<n;k++){ int t=(a[i]-a[j]?a[i]-a[j]:a[j]-a[i]); if((a[i]+a[j]>a[k])&&t<a[k]) ans=max(ans,a[i]+a[j]+a[k]); } } } cout<<ans<<endl; } return 0;}(2)先排序再找规律if(a[i-2]+a[i-1]<a[i]) --i; else ans=a[i-2]+ai-1]+a[i];O(n log n)
#include <iostream>#include<algorithm>using namespace std;int main(){ int n,a[105]; while(cin>>n){ for(int i=0;i<n;i++){ cin>>a[i]; } int ans=0; sort(a,a+n); for(int i=n-1;i>=2;--i){ if(a[i]<a[i-1]+a[i-2]){ ans=a[i]+a[i-1]+a[i-2]; break; } } cout<<ans<<endl; } return 0;}
0 0
- 三角形
- 三角形
- 三角形
- 三角形
- 三角形
- 三角形
- 三角形
- 三角形
- 三角形
- 三角形
- 三角形
- 三角形
- 三角形
- 三角形
- 三角形
- 三角形
- 三角形
- 三角形
- ia32-libs ubuntu 16.04
- 2016 年全国房价会呈什么趋势?
- poj1737 Connected Graph(组合数学)
- 292. Nim Game
- Android 打包流程
- 三角形
- NFC初识(一)
- Android个人学习小结2016.7 有时候完成比完美更好
- 2015年养老金如何计算?养老金怎么计算
- 【51Nod】-1083 矩阵取数问题(DP)
- C#+SqlServer实体类生成工具
- cocos2dx多线程以及线程同步 与 cocos2dx内存管理与多线程问题
- storm、jstorm调研系列 (三)-----jstorm 代码例子和解读(自己写的代码,可以运行)
- Android 6.0 新功能及主要 API 变更