Можно ли разделить квадрат на 2 равные части чтобы все точки находящиеся на нем были по одну сторону квадрата? - C#
Формулировка задачи:
На квадратном торте N свечей. Можно ли одним прямолинейным разрезом разделить его на две равные по площади части, одна из которых не содержала бы ни одной свечи? Свечи будем считать точками, у которых известны их целочисленные координаты Х[1], Y[1]; ...; Х[N], Y[N].
Нид хелп.
Решение задачи: «Можно ли разделить квадрат на 2 равные части чтобы все точки находящиеся на нем были по одну сторону квадрата?»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Drawing; namespace ConsoleApplication1 { class Program { static bool IsCandlesInOneHalf(PointF center, PointF[] candles) { for (int i = 0; i < candles.Length; i++) { PointF firstVector = PointF.Subtract(candles[i], new SizeF(center)); int previousSign = 0; var isInOneHalf = true; for (int j = 0; j < candles.Length; j++) { if (i != j) { PointF secondVector = PointF.Subtract(candles[j], new SizeF(center)); int sign = Math.Sign(firstVector.X * secondVector.Y - secondVector.X * firstVector.Y); if (previousSign == 0) { previousSign = sign; } else if (previousSign != sign) { isInOneHalf = false; break; } } } if (isInOneHalf) { return true; } } return false; } static void Main(string[] args) { int n; Console.WriteLine("Сколько будет свечей?"); n = Convert.ToInt32(Console.ReadLine()); int[] dotX = new int[n]; int[] dotY = new int[n]; Console.WriteLine("Введите координаты свечей"); for (int i = 0; i < n; i++) { Console.Write("X{0} = ", i + 1); dotX[i] = Convert.ToInt32(Console.ReadLine()); Console.Write("Y{0} = ", i + 1); dotY[i] = Convert.ToInt32(Console.ReadLine()); } var candles = Enumerable.Range(0, n).Select(i => new PointF(dotX[i], dotY[i])).ToArray(); bool possible = IsCandlesInOneHalf(PointF.Empty, candles); if (possible == true) { Console.WriteLine("Такой разрез возможен"); } else { Console.WriteLine("Nope"); } Console.ReadKey(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д