> 백엔드 개발 > C++ > C의 한 점을 통과하는 개별 직선의 최대 개수

C의 한 점을 통과하는 개별 직선의 최대 개수

WBOY
풀어 주다: 2023-08-26 10:25:06
앞으로
1200명이 탐색했습니다.

C의 한 점을 통과하는 개별 직선의 최대 개수

각 선에 대해 숫자 N과 두 점 (x1,y1) 및 (x2,y2)의 좌표를 얻습니다. 목표는 주어진 직선 중에서 두 개의 직선이 서로 겹치지 않고 회전이 수행되지 않도록 단일 점을 통과할 수 있는 최대 직선 수를 찾는 것입니다.

직선을 (쌍) m,c)로 표현하겠습니다. 여기서 y=mx+c,m은 기울기 m=y2-y1/x2-x1

c1!=c2로 가정할 때 동일한 m을 갖는 선은 다음과 같습니다. 평행. 다양한 경사를 미터 단위로 계산해 보겠습니다. 수직선의 경우 x1=x2이면 기울기 = INT_MAX이고, 그렇지 않으면 m입니다.

예문을 통해 이해해 보세요.

Input

Line 1 (x1,y1)=(4,10) (x2,y2)=(2,2)
Line 2 (x1,y1)=(2,2) (x2,y2)=(1,1)
로그인 후 복사

Output

Maximum lines: 2
로그인 후 복사
로그인 후 복사

설명 - 버스 수는 2대입니다. 두 선의 기울기가 다릅니다.

Input

Line 1 (x1,y1)=(1,5) (x2,y2)=(3,2)
Line 2 (x1,y1)=(2,7) (x2,y2)=(2,8)
로그인 후 복사

Output

Maximum lines: 2
로그인 후 복사
로그인 후 복사

Description - 버스 수는 2대입니다. 둘 다 경사도가 다릅니다.

아래 프로그램에서 사용된 메소드는 다음과 같습니다

  • 정수 배열 x1[] 및 x2[]는 선 위의 점 좌표를 저장하는 데 사용됩니다.

  • 함수 numLines(int x1[],int y1[], int x2[], int y2[])는 단일 점을 통과하는 선의 수를 계산합니다.

  • x1[],y1[],x2[],y2[]의 각 점에 공식을 적용하여 기울기를 계산하고 k를 사용하여 기울기 수를 증가시킵니다.

  • 배열 s[]는 기울기 값을 저장합니다.

    >
  • k를 결과의 행 수로 반환합니다.

Example

Live Demo

#include <stdio.h>
int numLines(int n, int x1[], int y1[], int x2[], int y2[]){
   double s[10];
   int k=0;
   double slope;
   for (int i = 0; i < n; ++i) {
      if (x1[i] == x2[i])
         slope = 999;
      else
         slope = (y2[i] - y1[i]) * 1.0 / (x2[i] - x1[i]) * 1.0;
         s[k++]=slope;
   }
   return k;
}
int main(){
   int n = 2;
   int x1[] = { 1, 5 }, y1[] = { 3, 2 };
   int x2[] = { 2,7 }, y2[] = { 2, 8 };
   printf("Maximum lines: %d", numLines(n, x1, y1, x2, y2));
   return 0;
}
로그인 후 복사

Output

위 코드를 실행하면 다음 출력이 생성됩니다. -

Maximum distinct lines passing through a single point : 2
로그인 후 복사

위 내용은 C의 한 점을 통과하는 개별 직선의 최대 개수의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿