算法打卡39:喷水装置
生活随笔
收集整理的這篇文章主要介紹了
算法打卡39:喷水装置
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
365算法每日學計劃
39打卡:
描述
現有一塊草坪,長為20米,寬為2米,要在橫中心線上放置半徑為Ri的噴水裝置,每個噴水裝置的效果都會讓以它為中心的半徑為實數Ri(0<ri<15)的圓被濕潤,這有充足的噴水裝置i(1<i<600)個,并且一定能把草坪全部濕潤,你要做的是:選擇盡量少的噴水裝置,把整個草坪的全部濕潤。< p="">
輸入
第一行m表示有m組測試數據
每一組測試數據的第一行有一個整數數n,n表示共有n個噴水裝置,隨后的一行,有n個實數ri,ri表示該噴水裝置能覆蓋的圓的半徑。輸出
輸出所用裝置的個數
樣例輸入
- 2
5
2?3.2?4?4.5?6?
10
1?2?3?1?2?1.2?3?1.1?1?2
? ? ? ? ?
樣例輸出
- 2 5
思路:
import?java.util.Arrays; import?java.util.Scanner;public?class?_39?{public?static?void?main(String[]?args)?{Scanner?input?=?new?Scanner(System.in);int?m?=?input.nextInt();while?(m--?>?0)?{int?n?=?input.nextInt();double[]?a?=?new?double[n];for?(int?i?=?0;?i?<?a.length;?i++)?{//每個噴水裝置的初始化a[i]?=?input.nextDouble();}//采用貪心算法,所以先對每個噴水裝置的半徑進行排序,從大的開始Arrays.sort(a);int?num?=?0;double?sum?=?0;for?(int?i?=?a.length?-?1;?i?>=?0;?i--)?{if?(i?>?1)?{//計算圓與長方形相交的正方形的面積sum?+=?Math.sqrt(a[i]?*?a[i]?-?1)?*?2;num++;if?(sum?>=?20)?{break;}}}System.out.println(num);}} }注:思海同學創建了一個算法每日學交流社區,如果有想加入的小伙伴,可以掃一下下面的二維碼加我為好友,我拉你入群(請備注:算法)。
附上熱門QQ群,存放資源和歷史資料,2000容量(低門檻付費群),長按二維碼入群
????????????????????????????????????????????? ? ? ? 長按二維碼關注
總結
以上是生活随笔為你收集整理的算法打卡39:喷水装置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tomcat基本使用,就是这么简单
- 下一篇: Oracle12g添加c##scott用