# C#LeetCode刷题之#447-回旋镖的数量（Number of Boomerangs）

Given n points in the plane that are all pairwise distinct, a “boomerang” is a tuple of points (i, j, k) such that the distance between i and j equals the distance between i and k (the order of the tuple matters).

Find the number of boomerangs. You may assume that n will be at most 500 and coordinates of points are all in the range [-10000, 10000] (inclusive).

Input:[[0,0],[1,0],[2,0]]

Output:2

Explanation:The two boomerangs are [[1,0],[0,0],[2,0]] and [[1,0],[2,0],[0,0]]

```public class Program {

public static void Main(string[] args) {
var points = new int[,] { { 0, 0 }, { 1, 0 }, { 2, 0 } };

var res = NumberOfBoomerangs(points);
Console.WriteLine(res);

}

public static int NumberOfBoomerangs(int[,] points) {
var res = 0;
for(var i = 0; i < points.GetLength(0); ++i) {
var dic = new Dictionary<double, int>();
for(var j = 0; j < points.GetLength(0); ++j) {
var a = points[i, 0] - points[j, 0];
var b = points[i, 1] - points[j, 1];
var c = a * a + b * b;
if(dic.ContainsKey(c)) {
dic[c]++;
} else {
dic[c] = 1;
}
}
foreach(var item in dic) {
res += item.Value * (item.Value - 1);
}
}
return res;
}

}```

`2`

(2)