2 qq 37002610 qq_37002610 于 2017.01.15 23:47 提问

杭电acm1007,不考虑运行时间问题,我的代码错在哪?

#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)

1个回答

shen_wei
shen_wei   Ds   Rxr 2017.01.16 15: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;
}
qq_37002610
qq_37002610 回复人类新纪元开始了: 明白了,谢谢。
11 个月之前 回复
shen_wei
shen_wei 自己好好对比吧。。里面的差别你没有看出来??
11 个月之前 回复
qq_37002610
qq_37002610 我的代码格式似乎出了点问题,头文件名是#include<iostream> #include<cmath> #include<iomanip>,其他的和你的一样。那么请问你知道我错在哪吗?
11 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!