Сколько можно построить отрезков на заданном множестве точек, имеющих различную длину? - C#
Формулировка задачи:
Дано множество точек на плоскости. Сколько можно построить отрезков на данном множестве, имеющих различную длину?
Решение задачи: «Сколько можно построить отрезков на заданном множестве точек, имеющих различную длину?»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApplication244
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
var points = new PointF[] {new PointF(1, 2), new PointF(1, 3), new PointF(3, 3), new Point(3, 2)};
var count = CalcSegmentCount(points);
Console.WriteLine(count);
}
private int CalcSegmentCount(PointF[] points)
{
var lengthes = new HashSet<float>();
for(int i=0;i<points.Length;i++)
for(int j=0;j<points.Length;j++)
if(i != j)
{
var p1 = points[i];
var p2 = points[j];
var seg = new PointF(p1.X - p2.X, p1.Y - p2.Y);
var len = Math.Sqrt(seg.X * seg.X + seg.Y * seg.Y);
var lenF = (float)Math.Round(len, 3);//округляем длину отрезка до трех знаков после запятой
lengthes.Add(lenF);
}
return lengthes.Count;
}
}
}