Пересекаются ли прямоугольники?

239
11 января 2020, 01:40

Первая строка входных данных содержит четыре целых числа

Вторая строка содержит четыре целых числа

Выведите “Yes”, если заданные прямоугольники имеют хотя бы одну общую точку, и “No” в противном случае. Есть такой код

import java.util.Scanner;
public class Main {
public static void main(String[] args) {

    Scanner in = new Scanner(System.in);
    int matchesCount = 0;
    int[] angle = new int[4];
    int[] angle2 = new int[4];
    boolean[] secondMatches = new boolean[angle2.length];
    for (int i = 0; i < secondMatches.length; i++) {
        secondMatches[i] = false;
    }
    for (int i = 0; i < angle.length; i++) {
        angle[i] = in.nextInt();
    }
    for (int j = 0; j < angle2.length; j++) {
        angle2[j] = in.nextInt();
    }
    for (int firstElement : angle) {
        for (int i = 0; i < angle2.length; i++) {
            if (firstElement < 0) {
                firstElement = 0;
            }
            {
                if (firstElement == angle2[i]) {
                    if (angle2[i] < 0) {
                        angle2[i] = 0;
                    }
                    {
                        if (!secondMatches[i]) {
                            secondMatches[i] = true;
                            matchesCount++;
                        }
                        break;
                    }
                }
            }
        }
    }
    if (matchesCount >= 1) {
        System.out.println("Yes");
    } else {
        System.out.println("No");
    }

}
}

Проходит все тесты с открытыми значениями, с закрытыми где-то выдает не правильный ответ.

Условие задачи: На плоскости даны два прямоугольника. Стороны прямоугольников параллельны осям координат (то есть стороны либо горизонтальны, либо вертикальны). В этой задаче прямоугольник — это граница прямоугольника и его внутренность. Каждый прямоугольник задан координатами двух противоположных вершин. Проверьте, имеют ли два заданных прямоугольника хотя бы одну общую точку (в частности, если прямоугольники касаются по стороне или даже по вершине, они имеют общую точку).

Пример:

Ввод:
1 6 4 3
2 2 9 4

Вывод:"Yes"

Answer 1

Прямоугольники НЕ пересекаются:
- если левый край первого лежит правее правого края второго
- или левый край второго лежит правее правого края первого
- или верхний край первого лежит ниже нижнего края второго
- или верхний край второго лежит ниже нижнего края первого

И соответственно пересекаются в случае, если ни одно из этих условий не выполняется. Получается четырёхэтажная, но несложная зависимость:

isIntersect = not ( (left1 > right2) or
                    ...
                  )  
Answer 2
Xc_distance = abs(Xc1 - Xc2) // - расстояние между центрами
W_average = (W1 + W2) / 2    // - средняя ширина
if ((Xc_distance <= W_average) and (такое же условие для Y))
{
  // пересекаются
}
Answer 3

Если координаты первого fxl (first x left), fyb (first y bottom), fxr (first x right), fyt (first y top), а второго sxl и т.д. - то условие перечечения

if (max(fxl,sxl) <= min(fxr,sxr) &&
    max(fyb,syb) <= min(fyt,syt)) {
    // Пересечение
}
READ ALSO
Как в Андроид Студио создать онлайн режим? [закрыт]

Как в Андроид Студио создать онлайн режим? [закрыт]

Хотите улучшить этот вопрос? Переформулируйте вопрос, чтобы он был сосредоточен только на одной проблеме, отредактировав его

216
Ошибка при добавлении столбца в SQL

Ошибка при добавлении столбца в SQL

Помогите с решением, я добавил новый столбец в таблицу SQLНо в логах выводится ошибка такого рода:

281
Прошу помощи с микросервисами

Прошу помощи с микросервисами

Пишу тестовый микросервис с авторизацией JWT

257
Инициализация при NullPoinerException (boolean)

Инициализация при NullPoinerException (boolean)

Являюсь абсолютным новичком в Java (соответственно в Android dev-e)Прочитав статью конца зимы 2011 года (https://habr

208