/**
* Note: The returned array must be malloced, assume caller calls free().
*/
#define MAX(a, b) ((a) > (b) ? (a) : (b))
//距离计算
static int mysqrt(int *tower1, int *tower2)
{
return (tower1[0] - tower2[0]) * (tower1[0] - tower2[0]) + (tower1[1] - tower2[1]) * (tower1[1] - tower2[1]);
}
int* bestCoordinate(int** towers, int towersSize, int* towersColSize, int radius, int* returnSize){
int *ans = (int *)malloc(sizeof(int) * 2);
memset(ans, 0, sizeof(ans));
*returnSize = 2;
int max = 0;//初始化
for(int i = 0; i <= 50; ++i) {
for(int j = 0; j <= 50; ++j) {//枚举所有点
int sum = 0;
int d = 0;
int temp[2] = {i,j};
for(int j = 0; j < towersSize; ++j) {//枚举所有信号塔
if((d = mysqrt(temp, towers[j])) <= radius * radius) {
sum += (int)(towers[j][2] / (1 + pow(d,0.5)));//累加所有信号值
}
}
if(max < sum)
{//保存最大小标
memcpy(ans, temp, sizeof(temp));
max = sum;
}
}
}
return ans;
}