세 개의 서로 다른 점(또는 좌표)이 주어졌다고 가정하고 이 세 점을 연결하여 형성할 수 있는 수평선 또는 수직 선분의 수를 구하려고 합니다. 이러한 선 세그먼트를 폴리라인이라고도 합니다. 이 문제를 해결하기 위해서는 계산기하학의 개념이 필요합니다. 이 기사에서는 C++에서 이 문제를 해결하는 다양한 방법에 대해 설명합니다.
c1, c2, c3이 데카르트 평면 위의 3개 점의 좌표라고 가정합니다. 이 세 점을 연결하는 수평선 또는 수직선 세그먼트의 수는 아래와 같습니다.
으아악Note − 가로 및 세로 선분은 좌표축과 정렬되어야 합니다.
if 문을 사용하여 이 세 점 사이에 수평선 또는 수직선이 있는지 확인할 수 있습니다.
c1.x와 c2.x, c1.x과 c3.x, c2.x, c3.x을 결합하여 함수를 만듭니다. 두 조건 중 하나가 충족되면 수평선 세그먼트가 있고 개수가 증가한다는 의미입니다.
마찬가지로 이 기능은 c1.y를 c2.y와, c1.y를 c3.y, c2.y 및 c3.y와 결합하여 작동합니다. 조건 중 하나라도 충족되면 수직선 세그먼트가 존재합니다. 카운트가 다시 증가합니다.
Note− 세 점이 모두 직교 평면의 동일한 축(예: X축 또는 Y축)에 있는 경우 이를 연결하는 데 필요한 선분의 수는 1입니다. 점이 L 모양을 형성하는 경우, 결과는 2이고, 그렇지 않으면 결과는 3입니다.
여기서 보조 함수(horizontalLine 및 verticalLine)을 사용하여 선분을 계산할 수 있습니다.
우리는 데카르트 시스템에서 수평선의 모든 점이 동일한 y 좌표에 있다는 사실을 이용합니다. horizontalLine 함수는 y 좌표를 비교하여 두 점이 수평선 세그먼트를 형성할 수 있는지 확인합니다. y좌표가 같으면 수평선이 생깁니다.
마찬가지로 수직선의 모든 점은 동일한 x 좌표에 있습니다. verticalLine 함수는 x 좌표를 비교하여 두 점이 수직선 세그먼트를 형성할 수 있는지 확인합니다. x좌표가 같으면 수직선이 생깁니다.
다음으로 가로 및 세로 선 세그먼트 수를 계산하는 countLineSegments 함수가 있습니다. 가로 또는 세로 선 세그먼트가 있는 경우 각 반복 후에 개수가 증가합니다.
이 기사에서는 C++를 사용하여 데카르트 평면의 서로 다른 3개 점을 연결할 수 있는 수평선과 수직선의 수를 구하는 다양한 방법을 살펴봅니다. 우리는 이 문제를 해결하기 위한 if 문 접근 방식에 대해 이미 논의했습니다. 그러나 반복 횟수가 많아지면 시간 복잡도도 증가합니다. 반복 횟수를 줄여 시간 복잡도를 줄이는 도우미 기능을 사용하면 이 문제를 효율적으로 해결할 수 있습니다.
위 내용은 3개의 점을 연결하는 데 필요한 수평선 또는 수직선 세그먼트 수의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!