#include
#include
#include
using namespace std;
int main()
{
int N,i,j,k=0;
double min;
while (cin >> N&&N)
{
double x = new double[N];
double *y = new double[N];
double *d = new double[N(N-1)];
for (i = 0; i < N; i++)
cin >> x[i] >> y[i];
for (i = 0; i < N-1; i++)
{
for (j = i + 1; j < N; j++)
{
if (x[i] == x[j] && y[i] == y[j]) d[k] = 0;
else d[k] = (x[i] - x[j])*(x[i] - x[j]) + (y[i] - y[j])*(y[i] - y[j]);
k++;
}
}
min = d[0];
for (k = 0; k < N*(N - 1) / 2; k++)
if (min > d[k]) min = d[k];
if(min!=0) min = sqrt(min)/2;
cout << setprecision(2) << fixed << min << endl;
delete []x, y, d;
}
return 0;
}
连续输入两次数据:
2
1 1
1 1
为什么第一次是0.00,第二次是-nan(ind)
杭电acm1007,不考虑运行时间问题,我的代码错在哪?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答
- shen_wei 2017-01-16 07:20关注
int main() { int N,i,j,k=0; double min; while (cin >> N&&N) { double *x = new double[N]; double *y = new double[N]; double *d = new double[N-1]; for (i = 0; i < N; i++) cin >> x[i] >> y[i]; for (i = 0; i < N-1; i++) { for (j = i + 1; j < N; j++) { if (x[i] == x[j] && y[i] == y[j]) d[k] = 0; else d[k] = (x[i] - x[j])*(x[i] - x[j]) + (y[i] - y[j])*(y[i] - y[j]); k++; } } min = d[0]; for (k = 0; k < N*(N - 1) / 2; k++) { if (min > d[k]) min = d[k]; } if(min!=0) min = sqrt(min)/2; cout << setprecision(2) << fixed << min << endl; k = 0; //////////////////////// delete x, y, d; } return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
- ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
- ¥20 有关区间dp的问题求解
- ¥15 多电路系统共用电源的串扰问题
- ¥15 slam rangenet++配置
- ¥15 有没有研究水声通信方面的帮我改俩matlab代码
- ¥15 ubuntu子系统密码忘记
- ¥15 保护模式-系统加载-段寄存器
- ¥15 电脑桌面设定一个区域禁止鼠标操作
- ¥15 求NPF226060磁芯的详细资料