请用C++写代码:请用C++写代码:有一条可以视为线段的街道,长度为L,其中有n个路灯,每个路灯能照亮的半径都是相同的,求最小的照亮半径r使得整条街道上的每一个点都能被照亮。一行一个数表示答案两个正整数n,L。第二行为初始n个实数,表示n个路灯的坐标数据保证在0到L之间。
时间: 2023-03-28 21:04:57 浏览: 100
以下是C语言代码:
#include <stdio.h>
#include <math.h>
int main()
{
int n, L;
double x[100], r = ;
scanf("%d %d", &n, &L);
for(int i = ; i < n; i++)
{
scanf("%lf", &x[i]);
}
// 排序
for(int i = ; i < n - 1; i++)
{
for(int j = i + 1; j < n; j++)
{
if(x[i] > x[j])
{
double temp = x[i];
x[i] = x[j];
x[j] = temp;
}
}
}
// 计算最小半径
for(int i = ; i < n - 1; i++)
{
double d = x[i + 1] - x[i];
if(d / 2 > r)
{
r = d / 2;
}
}
if(L - x[n - 1] > r)
{
r = L - x[n - 1];
}
printf("%.2lf", r);
return ;
}
阅读全文