Rumah >pembangunan bahagian belakang >C++ >Bilangan maksimum garis lurus berbeza melalui satu titik dalam C

Bilangan maksimum garis lurus berbeza melalui satu titik dalam C

WBOY
WBOYke hadapan
2023-08-26 10:25:061170semak imbas

Bilangan maksimum garis lurus berbeza melalui satu titik dalam C

Kami mendapat nombor N untuk setiap baris dan koordinat dua titik (x1,y1) dan (x2,y2). Matlamatnya adalah untuk mencari bilangan maksimum garis lurus daripada garis lurus yang diberikan yang boleh melalui satu titik supaya tiada dua garis lurus menutup satu sama lain dan tiada putaran dilakukan.

Kami akan mewakili garis lurus sebagai (pasangan) m,c) dengan y=mx+c,m ialah cerun m=y2-y1/x2-x1

Diberi c1!=c2, garisan dengan m yang sama ialah selari dengan. Kami akan mengira cerun yang berbeza dalam meter. Untuk garis menegak, jika x1=x2, maka cerun = INT_MAX, jika tidak m.

Mari kita fahami melalui contoh.

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

Penjelasan - Bilangan bas ialah 2. Kecerunan kedua-dua garisan adalah berbeza.

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

Penerangan - Bilangan bas ialah 2. Kedua-duanya mempunyai cerun yang berbeza.

Kaedah yang digunakan dalam atur cara di bawah adalah seperti berikut

  • Tatasusunan integer x1[] dan x2[] digunakan untuk menyimpan koordinat titik pada garisan.

  • Fungsi numLines(int x1[],int y1[], int x2[], int y2[]) mengira bilangan baris yang melalui satu titik.

  • Gunakan formula untuk setiap titik dalam x1[],y1[],x2[],y2[] untuk mengira cerun dan gunakan k untuk menambah kiraan cerun.

  • Tatasusunan s[] menyimpan nilai cerun.

    >
  • Kembalikan k sebagai bilangan baris dalam hasil.

Contoh

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

Jika kita menjalankan kod di atas, ia akan menghasilkan output berikut -

Maximum distinct lines passing through a single point : 2

Atas ialah kandungan terperinci Bilangan maksimum garis lurus berbeza melalui satu titik dalam C. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam