C#实现有六个点根据权重不同按顺序筛选出最优距离
时间: 2023-07-12 07:45:08 浏览: 45
可以使用 LINQ 来实现按权重排序和筛选操作。以下是一个实现示例:
```csharp
// 定义一个结构体表示点和权重
struct PointWeight
{
public Point point;
public int weight;
}
// 定义一个数组表示六个点和它们的权重
PointWeight[] points = new PointWeight[]
{
new PointWeight { point = new Point(1, 2), weight = 6 },
new PointWeight { point = new Point(3, 4), weight = 2 },
new PointWeight { point = new Point(5, 6), weight = 3 },
new PointWeight { point = new Point(7, 8), weight = 4 },
new PointWeight { point = new Point(9, 10), weight = 1 },
new PointWeight { point = new Point(11, 12), weight = 5 },
};
// 按权重从小到大排序,然后取前三个点
var selectedPoints = points.OrderBy(p => p.weight).Take(3).Select(p => p.point);
// 输出筛选结果
foreach (var p in selectedPoints)
{
Console.WriteLine($"({p.X}, {p.Y})");
}
```
在上面的示例中,我们首先定义了一个结构体 `PointWeight`,用于表示点和权重。然后,我们定义了一个包含六个点和它们的权重的数组 `points`。
接下来,我们使用 LINQ 中的 `OrderBy` 方法按权重从小到大排序,然后使用 `Take` 方法取前三个点,最后使用 `Select` 方法选择只保留点的信息。最终,我们得到了三个按权重筛选出来的最优点,它们被存储在 `selectedPoints` 变量中。
最后,我们通过一个 `foreach` 循环遍历 `selectedPoints`,并将它们的坐标输出到控制台中。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)