Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article
Given an N * M grid. It contains exactly three ‘*’ and every other cell is a ‘.’ where ‘*’ denotes a vertex of a rectangle. The task is to find the coordinates of the fourth (missing) vertex (1-based indexing).
Examples:
Input: grid[][] = {“*.*”, “*..”, “…”}
Output: 2 3
(1, 1), (1, 3) and (2, 1) are the given coordinates of the rectangle where (2, 3) is the missing coordinate.
Input: grid[][] = {“*.*”, “..*”}
Output: 2 1
Approach: Find the coordinates of the 3 vertices by iterating through the given grid. Since a rectangle consists of 2 X-coordinates and 2 Y-coordinates and 4 vertices, every X-coordinate and Y-coordinate should occur exactly twice. We can count how many times each X and Y coordinate occurs in the 3 given vertices and the 4th one will have coordinates that occur only once.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using
namespace
std;
pair<
int
,
int
> findFourthVertex(
int
n,
int
m, string s[])
{
unordered_map<
int
,
int
> row, col;
for
(
int
i = 0; i < n; i++)
for
(
int
j = 0; j < m; j++)
if
(s[i][j] ==
'*'
) {
row[i]++;
col[j]++;
}
int
x, y;
for
(
auto
tm
: row)
if
(
tm
.second == 1)
x =
tm
.first;
for
(
auto
tm
: col)
if
(
tm
.second == 1)
y =
tm
.first;
return
make_pair(x + 1, y + 1);
}
int
main()
{
string s[] = {
"*.*"
,
"*.."
,
"..."
};
int
n =
sizeof
(s) /
sizeof
(s[0]);
int
m = s[0].length();
auto
rs = findFourthVertex(n, m, s);
cout << rs.first <<
" "
<< rs.second;
}
Java
import
java.util.HashMap;
import
java.util.Map;
class
GfG
{
static
Pair<Integer, Integer> findFourthVertex(
int
n,
int
m, String s[])
{
HashMap<Integer, Integer> row =
new
HashMap<>();
HashMap<Integer, Integer> col =
new
HashMap<>();
for
(
int
i =
0
; i < n; i++)
{
for
(
int
j =
0
; j < m; j++)
{
if
(s[i].charAt(j) ==
'*'
)
{
if
(row.containsKey(i))
{
row.put(i, row.get(i) +
1
);
}
else
{
row.put(i,
1
);
}
if
(col.containsKey(j))
{
col.put(j, col.get(j) +
1
);
}
else
{
col.put(j,
1
);
}
}
}
}
int
x =
0
, y =
0
;
for
(Map.Entry<Integer, Integer> entry : row.entrySet())
{
if
(entry.getValue() ==
1
)
x = entry.getKey();
}
for
(Map.Entry<Integer, Integer> entry : col.entrySet())
{
if
(entry.getValue() ==
1
)
y = entry.getKey();
}
Pair<Integer, Integer> ans =
new
Pair<>(x +
1
, y +
1
);
return
ans;
}
public
static
void
main(String []args)
{
String s[] = {
"*.*"
,
"*.."
,
"..."
};
int
n = s.length;
int
m = s[
0
].length();
Pair<Integer, Integer> rs = findFourthVertex(n, m, s);
System.out.println(rs.first +
" "
+ rs.second);
}
}
class
Pair<A, B>
{
A first;
B second;
public
Pair(A first, B second)
{
this
.first = first;
this
.second = second;
}
}
Python3
def
findFourthVertex(n, m, s) :
row
=
dict
.fromkeys(
range
(n),
0
)
col
=
dict
.fromkeys(
range
(m),
0
)
for
i
in
range
(n) :
for
j
in
range
(m) :
if
(s[i][j]
=
=
'*'
) :
row[i]
+
=
1
;
col[j]
+
=
1
;
for
keys,values
in
row.items() :
if
(values
=
=
1
) :
x
=
keys;
for
keys,values
in
col.items() :
if
(values
=
=
1
) :
y
=
keys;
return
(x
+
1
, y
+
1
) ;
if
__name__
=
=
"__main__"
:
s
=
[
"*.*"
,
"*.."
,
"..."
]
n
=
len
(s);
m
=
len
(s[
0
]);
rs
=
findFourthVertex(n, m, s);
print
(rs[
0
], rs[
1
])
C#
using
System;
using
System.Collections.Generic;
class
GfG
{
static
Pair<
int
,
int
> findFourthVertex(
int
n,
int
m, String []s)
{
Dictionary<
int
,
int
> row =
new
Dictionary<
int
,
int
>();
Dictionary<
int
,
int
> col =
new
Dictionary<
int
,
int
>();
for
(
int
i = 0; i < n; i++)
{
for
(
int
j = 0; j < m; j++)
{
if
(s[i][j] ==
'*'
)
{
if
(row.ContainsKey(i))
{
row[i] = row[i] + 1;
}
else
{
row.Add(i, 1);
}
if
(col.ContainsKey(j))
{
col[j] = col[j] + 1;
}
else
{
col.Add(j, 1);
}
}
}
}
int
x = 0, y = 0;
foreach
(KeyValuePair<
int
,
int
> entry
in
row)
{
if
(entry.Value == 1)
x = entry.Key;
}
foreach
(KeyValuePair<
int
,
int
> entry
in
col)
{
if
(entry.Value == 1)
y = entry.Key;
}
Pair<
int
,
int
> ans =
new
Pair<
int
,
int
>(x + 1, y + 1);
return
ans;
}
public
static
void
Main(String []args)
{
String []s = {
"*.*"
,
"*.."
,
"..."
};
int
n = s.Length;
int
m = s[0].Length;
Pair<
int
,
int
> rs = findFourthVertex(n, m, s);
Console.WriteLine(rs.first +
" "
+ rs.second);
}
}
class
Pair<A, B>
{
public
A first;
public
B second;
public
Pair(A first, B second)
{
this
.first = first;
this
.second = second;
}
}
Javascript
<script>
function
findFourthVertex(n, m, s)
{
var
row =
new
Map(), col =
new
Map();
for
(
var
i = 0; i < n; i++)
for
(
var
j = 0; j < m; j++)
if
(s[i][j] ==
'*'
) {
if
(row.has(i))
row.set(i, row.get(i)+1)
else
row.set(i, 1)
if
(col.has(j))
col.set(j, col.get(j)+1)
else
col.set(j, 1)
}
var
x, y;
row.forEach((value, key) => {
if
(value == 1)
x = key;
});
col.forEach((value, key) => {
if
(value == 1)
y = key;
});
return
[x + 1, y + 1];
}
var
s = [
"*.*"
,
"*.."
,
"..."
];
var
n = s.length;
var
m = s[0].length;
var
rs = findFourthVertex(n, m, s);
document.write( rs[0] +
" "
+ rs[1]);
</script>
Time Complexity: O(N*M), as we are using a loop to traverse N*M times.
Auxiliary Space: O(N + M), as we are using extra space for map.
Last Updated :
31 May, 2022
Like Article
Save Article
Vote for difficulty
Current difficulty :
Basic
Вопрос от пользователя:
C# Даны целочисленные координаты трех вершин прямоугольника, стороны
которого параллельны координатным осям. Найти координаты его четвертой вершины.
Подождите!
Не закрывайте страницу. Нейросеть пишет ответ. Он появится тут.
Этот ответ написан нейросетью.
Искуственный интеллект во многом преуспевает, но в некоторых областях может давать неточные ответы.
Если вам не понравился ответ, попробуйте задать его более развёрнуто и конкретно, используя точные параметры.
Ответ нейросети:
Для нахождения координаты четвертой вершины прямоугольника необходимо знать координаты оставшихся трех вершин. Предположим, что первая вершина имеет координаты x1 и y1, вторая вершина имеет координаты x2 и y2, а третья вершина имеет координаты x3 и y3.
Сначала найдем длины всех сторон прямоугольника. Для этого используем формулу:
a = sqrt((x2 — x1)^2 + (y2 — y1)^2)
b = sqrt((x3 — x2)^2 + (y3 — y2)^2)
Здесь «a» — длина одной стороны прямоугольника, а «b» — длина другой стороны.
Далее необходимо найти два возможных вектора, которые можно построить, соединив вершины прямоугольника. Эти векторы будут перпендикулярны друг другу и будут находиться в направлении сторон прямоугольника.
Для нахождения первого вектора вычитаем из координат второй вершины координаты первой вершины:
v1 = (x2 — x1, y2 — y1)
Для нахождения второго вектора вычитаем из координат третьей вершины координаты второй вершины:
v2 = (x3 — x2, y3 — y2)
Затем найдем векторное произведение этих двух векторов, чтобы найти вектор, перпендикулярный обоим:
v = v1 x v2
В результате мы получим третий вектор, который будет перпендикулярен первым двум.
Теперь можем найти координаты четвертой вершины, если наши первые три вершины пронумеруются так, чтобы первая вершина была в левом верхнем углу прямоугольника, а вторая вершина была верхней правой вершиной, а третья — правой нижней вершиной. В этом случае координаты четвертой вершины будут следующими:
x4 = x3 + v.x
y4 = y3 + v.y
Если же первая вершина — левая нижняя, вторая вершина — левая верхняя, а третья вершина — правая верхняя, то координаты четвертой вершины будут следующими:
x4 = x2 + v.x
y4 = y2 + v.y
Таким образом, мы можем найти координаты четвертой вершины прямоугольника, зная координаты любых трех его вершин, длину стороны и вектор, перпендикулярный сторонам прямоугольника.
⚠️Зарепортить пост!
Чтобы оставить комментарий, необходимо авторизоваться.
Задай любой вопрос нейросети!
она справится с любой поставленной задачей быстрее чем поиск в Яндекс.
Последние вопросы
(c) ChatGPT по русски 2023. Все права защищены. При обнаружении неправомерного контента пишите на [email protected]
У меня задание такое: Даны целочисленные координаты трех вершин прямоугольника, стороны которого параллельны координатным осям. Найти координаты его четвертой вершины.
Я сделала задачу. Пишет что 3.exe — 0 error(s), 0 warning(s)
И всё вроде бы нормально, когда запускаю вставляю координаты, а вывод не выводит. Может я немного в if запуталась? Помогите пожалуйста,может где я что-то не правильно записала.
C++ | ||
|
Вот как получается у меня. Помогите пожалуйста, очень нужно
Так как координаты трёх вершин имеют специальный, а не общий вид, можно, не мудрствуя лукаво, СРАЗУ написать ответ D(4,-3).
Немного поясню свой ответ. Сразу видно, что прямоугольник расположен так, что его стороны параллельны осям координат. Это потому, что А и В имеют одинаковые абсциссы, а В и С одинаковые ординаты, поэтому по соображениям симметрии А и D должны иметь одинаковые ординаты, а C и D одинаковые абсциссы, откуда следуют координаты D.
Если бы прямоугольник был как-то повёрнут и сдвинут относительно осей координат, то координаты четвёртой точки тоже можно было найти, но не так просто, а путём определённых вычислений и знания свойств прямоугольника.
Да, там ещё площадь. Понятно, что стороны равны 5 и 9, значит площадь равна 45.
bsitenldefom104
Вопрос по математике:
Точки А(-3,1)В(1,1)С(1,-1) Вершины прямоугольника АВСД Найдите координаты четвертой вершины прямоугольника и вычислите его периметр и площадь,если единичный отрезок 0,5 см ПОМОГИТЕ ПОЖАЛУЙСТА!!!❤️
Трудности с пониманием предмета? Готовишься к экзаменам, ОГЭ или ЕГЭ?
Воспользуйся формой подбора репетитора и занимайся онлайн. Пробный урок — бесплатно!
Ответы и объяснения 1
averampey
Д(-3,-1)
(2+1)•2=6см периметр
2•1=2см/кв площадь
Знаете ответ? Поделитесь им!
Гость ?
Как написать хороший ответ?
Как написать хороший ответ?
Чтобы добавить хороший ответ необходимо:
- Отвечать достоверно на те вопросы, на которые знаете
правильный ответ; - Писать подробно, чтобы ответ был исчерпывающий и не
побуждал на дополнительные вопросы к нему; - Писать без грамматических, орфографических и
пунктуационных ошибок.
Этого делать не стоит:
- Копировать ответы со сторонних ресурсов. Хорошо ценятся
уникальные и личные объяснения; - Отвечать не по сути: «Подумай сам(а)», «Легкотня», «Не
знаю» и так далее; - Использовать мат — это неуважительно по отношению к
пользователям; - Писать в ВЕРХНЕМ РЕГИСТРЕ.
Есть сомнения?
Не нашли подходящего ответа на вопрос или ответ отсутствует?
Воспользуйтесь поиском по сайту, чтобы найти все ответы на похожие
вопросы в разделе Математика.
Трудности с домашними заданиями? Не стесняйтесь попросить о помощи —
смело задавайте вопросы!
Математика — наука о структурах, порядке и отношениях, исторически сложившаяся на основе операций подсчёта, измерения и описания формы объектов.