ACM給小草澆水
阿新 • • 發佈:2018-11-09
題目描述
一天,小劉在操場散步,看見旁邊一塊矩形草坪上有幾個噴頭在給小草澆水,她發現有些小草沒有澆到水,小劉平時愛護一草一木,她想讓小草都能澆到水,可是一時又想不到好的解決辦法,聰明的你來幫幫她吧。(現有一塊草坪,長為20米,寬為2米,要在橫中心線上放置半徑為Ri的噴水裝置,每個噴水裝置的效果都會讓以它為中心的半徑為實數Ri(0<Ri<15)的圓被溼潤,這有充足的噴水裝置i(1<i<600)個,並且一定能把草坪全部溼潤,你要做的是:選擇儘量少的噴水裝置,把整個草坪的全部溼潤。)
int main() { int m,i,n,j; double a[100],s,t;//a陣列定義為double型,因為半徑不一定為整數 while(~scanf("%d",&m))//多組輸入 { while(m--) {scanf("%d",&n);s=0; for(i=1;i<=n;i++) { scanf("%lf",&a[i]); } for(i=1;i<n;i++) for(j=i;j<=n;j++)//給每個半徑排序,按從大到小,先選大的 { if(a[i]<a[j]) { t=a[i];a[i]=a[j];a[j]=t; } } for(i=1;i<=n;i++)// 依次相加每一個半徑。注意 是半徑。 {s=(s+a[i]); if(s>10)/*//必須大於10,因為s是半徑和。所以即直徑需要大於20。不能等於,等於則會有一部分無法覆蓋*/ break; } printf("%d\n",i); } } }