有大神幫忙看一下代碼嗎?
原題鏈接http://poj.org/problem?id=1328
#include<iostream>
#include<cmath>
using namespace std;
int n, d;
int a[1000][2];
double x[1000][2];
double temp;
int main()
{
int num = 0;
cin >> n >> d;
while (n && d)
{
num++;
bool flag = true;
for (int i = 0;i < n;i++)
cin >> a[i][0] >> a[i][1];
for (int i = 0;i < n;i++)
{
if (abs(a[i][1]) > abs(d))
{
cout << "Case " << num << ": " << -1 << endl;
flag = false;
break;
}
}
if (flag)
{
for (int i = 0;i < n;i++) //計算對于每個小島來說,雷達可放置的坐標范圍
{
double move = sqrt(double(d * d - a[i][1] * a[i][1]));
x[i][0] = a[i][0] - move;
x[i][1] = a[i][0] + move;
}
for (int i = 0;i < n-1;i++) //冒泡排序
{
for (int j = n-1;j > i;j--)
{
if (x[j][0] < x[j - 1][0])
{
temp = x[j][0];
x[j][0] = x[j - 1][0];
x[j - 1][0] = temp;
temp = x[j][1];
x[j][1] = x[j - 1][1];
x[j - 1][1] = temp;
}
}
}
int LD = 1;
temp = x[0][1];
for (int i = 1;i < n;i++)
{
if (x[i][0] <= temp)
{
if (x[i][1] < temp)
temp= x[i][1];
}
else
{
LD++;
temp = x[i][1];
}
}
cout << "Case " << num << ": " << LD << endl;
}
cin >> n >> d;
}
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/202769.html
標籤:數據結構與算法
