算法打卡39:喷水装置
365算法每日學(xué)計(jì)劃
39打卡:
描述
現(xiàn)有一塊草坪,長(zhǎng)為20米,寬為2米,要在橫中心線上放置半徑為Ri的噴水裝置,每個(gè)噴水裝置的效果都會(huì)讓以它為中心的半徑為實(shí)數(shù)Ri(0<ri<15)的圓被濕潤(rùn),這有充足的噴水裝置i(1<i<600)個(gè),并且一定能把草坪全部濕潤(rùn),你要做的是:選擇盡量少的噴水裝置,把整個(gè)草坪的全部濕潤(rùn)。< p="">
輸入
第一行m表示有m組測(cè)試數(shù)據(jù)
每一組測(cè)試數(shù)據(jù)的第一行有一個(gè)整數(shù)數(shù)n,n表示共有n個(gè)噴水裝置,隨后的一行,有n個(gè)實(shí)數(shù)ri,ri表示該噴水裝置能覆蓋的圓的半徑。輸出
輸出所用裝置的個(gè)數(shù)
樣例輸入
- 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++)?{//每個(gè)噴水裝置的初始化a[i]?=?input.nextDouble();}//采用貪心算法,所以先對(duì)每個(gè)噴水裝置的半徑進(jìn)行排序,從大的開(kāi)始Arrays.sort(a);int?num?=?0;double?sum?=?0;for?(int?i?=?a.length?-?1;?i?>=?0;?i--)?{if?(i?>?1)?{//計(jì)算圓與長(zhǎng)方形相交的正方形的面積sum?+=?Math.sqrt(a[i]?*?a[i]?-?1)?*?2;num++;if?(sum?>=?20)?{break;}}}System.out.println(num);}} }注:思海同學(xué)創(chuàng)建了一個(gè)算法每日學(xué)交流社區(qū),如果有想加入的小伙伴,可以掃一下下面的二維碼加我為好友,我拉你入群(請(qǐng)備注:算法)。
附上熱門(mén)QQ群,存放資源和歷史資料,2000容量(低門(mén)檻付費(fèi)群),長(zhǎng)按二維碼入群
????????????????????????????????????????????? ? ? ? 長(zhǎng)按二維碼關(guān)注
總結(jié)
以上是生活随笔為你收集整理的算法打卡39:喷水装置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: tomcat基本使用,就是这么简单
- 下一篇: 七夕节福利,一套java架构师资源等你拿