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
Lepaskan: 2023-08-26 10:25:06
ke hadapan
1203 orang telah melayarinya

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)
Salin selepas log masuk

Output

Maximum lines: 2
Salin selepas log masuk
Salin selepas log masuk

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)
Salin selepas log masuk

Output

Maximum lines: 2
Salin selepas log masuk
Salin selepas log masuk

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;
}
Salin selepas log masuk

Output

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

Maximum distinct lines passing through a single point : 2
Salin selepas log masuk

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!

sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan