挑战程序设计 1.6.1
来源:互联网 发布:软件无线电原理与应用 编辑:程序博客网 时间:2024/05/17 14:20
Question:
给出几段长度,请将这些长度拼接成周长最大的三角形,并输出最大的周长
Solution:
1.朴素解法
O(n^3)时间复杂度的枚举方法,枚举所有的情况进行判断,从而选择出最优秀的那种方案
核心代码:
for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(j==i) continue;for(int k=1;k<=n;k++){if(k==i||k==j) continue;else{count...}}}}
2.优化:
O(n*lgn)解法:
我们利用排序在O(n*lgn)时间复杂度内完成排序(逆序),然后从头开始取最大的三个,直到我们找不到为止
在这里有的同学可能要怀疑了,取最大的三个的话,不一定保证构成三角形啊
仔细想想就可以知道,取最大的三个就是为了保证上述的条件
核心代码:
sort(a+1,a+n+1);for(int i=1;i<=n;i++){if(a[i]<a[i+1]+a[i+2]) max=a[i]+a[i+1]+a[i+2];else continue;}
0 0
- 挑战程序设计 1.6.1
- 挑战程序设计竞赛(1)
- 挑战程序设计竞赛(1.6-p26)
- 挑战程序设计1.6.1 Instance1——三角形
- 挑战程序设计 1.6.1 Instance2——Ants
- 《挑战程序设计竞赛》1.6 轻松热身 POJ1852
- POJ 1852 Ants 《挑战程序设计竞赛》1.6
- 挑战程序设计之刷题笔记1
- 挑战编程 程序设计竞赛训练手册-1.6.1 3n+1问题(3n+1 Problem)
- 《挑战程序设计竞赛》 读后感
- 挑战程序设计 Millionaire
- 挑战程序设计---抽签
- 挑战程序设计竞赛:三角形
- 《挑战程序设计竞赛》 读后感
- 挑战程序设计:抽签
- [挑战程序设计]二分搜索
- [挑战程序设计]POJ2386
- 挑战编程 程序设计竞赛训练手册-1.6.2 扫雷(Minesweeper)
- iOS关于TableView的moveRowAtIndexPath相关介绍
- Switch语句没有case的例子
- 根据已知的数列变化反推初始数列
- HDU 1421 搬寝室(dp)
- uva 10288 Coupons
- 挑战程序设计 1.6.1
- 欢迎使用CSDN-markdown编辑器
- Android 水波纹效果
- java8新特性概述
- 圣经的权威
- 【24.91】【Tsinsen 1302】&【BZOJ 2626】JZPFAR
- 成功神学的错谬
- mvcc机制
- Android自助餐之插件化(使用Small框架)