圈地运动-组成面积大于0多边形

题目描述:

圈地运动,就是用很多木棍摆在地上组成一个面积大于0的多边形~小明喜欢圈地运动,于是他需要去小红店里面买一些木棍,期望圈出一块地来。小红想挑战一下小明,所以给小明设置了一些障碍。障碍分别是:1.如果小明要买第i块木棍的话,他就必须把前i-1块木棍都买下来。2.买了的木棍都必须用在圈地运动中。那么请问小明最少买多少根木棍,才能使得木棍围成的图形是个面积大于0多边形呢?

输入描述:第一行一个数n,表示木棍个数。 第二行n个数,第i个数表示第i个木棍的长度ai 1<=n<=10000 1<=ai<=10000

输出描述:输出一个数,表示最少需要的木棍个数,如果无解输出-1

样例输入

3
6 8 10

样例输出

3

提示:用三根6,8,10的木棍可以组成一个直角三角形的图形。

题目来自于:https://www.acmcoder.com/#/practice/code

满足以下条件即可组成多边形

1、边数最少为3;

2、满足最长边的长度小于其余边长总和

var printOut = function(arr){
  if(arr.length < 3){
     	console.log('-1');
  }else{
    for(i=3;i<=arr.length;i++){
      //从第三位开始判断能否组成多边形
      let temparr = [...arr]
      let sumarr = temparr.splice(0,i)
      //排序找最大值
      sumarr.sort((x,y)=>x-y)
      let sum = 0;
      let maxnum = sumarr[i-1]
      //求各边之和
      sumarr.forEach(item=>{
       	 sum += item
      })
      //判断最长边的长度是否小于其余边长总和
      if(sum-maxnum >maxnum){
         	console.log(i);
        	return;
      }
      //如果到最后一位都么有满足条件,则返回-1,跳出循环
      if(i===arr.length){
     			console.log('-1');
        	return;
      }
    }
  }
}
printOut([6,8,10])

结果:

//printOut([6,8,10])
3
//printOut([1,2,3,3,9])
4
//printOut([9,6,4,5,9])
3
//printOut([1,2,3,5])
4
//printOut([1,2,2,5,9])
3
//printOut([1,2,1,5,9])
-1
在uniapp中,可以使用第三方地图SDK来实现地图圈地功能。常用的地图SDK有百度地图、高德地图和腾讯地图等。以下是使用百度地图SDK实现地图圈地的步骤: 1. 在uniapp项目中安装百度地图SDK插件,并在App.vue中引入百度地图组件。 2. 在需要使用地图的页面中,引入百度地图SDK,并初始化地图。 3. 在地图上添加绘制工具,例如圆形绘制工具。 4. 在绘制完成后,获取圆形的中心点和半径,并将其传递给后端进行处理。 以下是示例代码: ```html <template> <view> <baidu-map class="map" :ak="ak" @load="onMapLoaded"> <bm-circle v-if="showCircle" :center="circleCenter" :radius="circleRadius" :fillColor="'#FF000033'" :strokeColor="'#FF0000'"></bm-circle> </baidu-map> </view> </template> <script> import {BmMap, BmCircle} from '@/components/baidu-map' export default { components: { BmMap, BmCircle }, data() { return { ak: 'your_ak', map: null, showCircle: false, circleCenter: null, circleRadius: null } }, methods: { onMapLoaded(map) { this.map = map this.addDrawingManager() }, addDrawingManager() { const drawingManager = new BMapLib.DrawingManager(this.map, { isOpen: false, enableDrawingTool: true, drawingToolOptions: { anchor: BMAP_ANCHOR_TOP_RIGHT, offset: new BMap.Size(5, 5), scale: 0.8, drawingModes: [BMAP_DRAWING_CIRCLE] }, circleOptions: { strokeWeight: 2, strokeColor: '#FF0000', strokeOpacity: 0.8, fillColor: '#FF000033', fillOpacity: 0.4, strokeStyle: 'solid' } }) drawingManager.addEventListener('circlecomplete', (e) => { this.showCircle = true this.circleCenter = e.getCenter() this.circleRadius = e.getRadius() }) } } } </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值