Rumah >pembangunan bahagian belakang >C++ >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.
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.
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; }
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!