Heim > Backend-Entwicklung > C++ > Hauptteil

Maximale Anzahl unterschiedlicher Geraden durch einen Punkt in C

WBOY
Freigeben: 2023-08-26 10:25:06
nach vorne
1164 Leute haben es durchsucht

Maximale Anzahl unterschiedlicher Geraden durch einen Punkt in C

Wir erhalten für jede Gerade die Zahl N und die Koordinaten der beiden Punkte (x1,y1) und (x2,y2). Das Ziel besteht darin, aus den gegebenen Geraden die maximale Anzahl an Geraden zu finden, die durch einen einzelnen Punkt verlaufen können, sodass sich keine zwei Geraden gegenseitig überdecken und keine Drehung durchgeführt wird.

Wir stellen die gerade Linie als (Paar) m,c) dar, wobei y=mx+c,m die Steigung m=y2-y1/x2-x1 ist.

Gegeben c1!=c2 sind Linien mit demselben m parallel zu. Wir berechnen verschiedene Steigungen in Metern. Wenn für eine vertikale Linie x1=x2, dann Steigung = INT_MAX, andernfalls m.

Lassen Sie es uns anhand von Beispielen verstehen.

Eingabe

Line 1 (x1,y1)=(4,10) (x2,y2)=(2,2)
Line 2 (x1,y1)=(2,2) (x2,y2)=(1,1)
Nach dem Login kopieren

Ausgabe

Maximum lines: 2
Nach dem Login kopieren
Nach dem Login kopieren

Erklärung - Die Anzahl der Busse beträgt 2. Die Steigungen der beiden Linien sind unterschiedlich.

Eingabe

Line 1 (x1,y1)=(1,5) (x2,y2)=(3,2)
Line 2 (x1,y1)=(2,7) (x2,y2)=(2,8)
Nach dem Login kopieren

Ausgabe

Maximum lines: 2
Nach dem Login kopieren
Nach dem Login kopieren

Beschreibung - Die Anzahl der Busse beträgt 2. Beide haben unterschiedliche Steigungen.

Die im folgenden Programm verwendeten Methoden sind wie folgt:

  • Integer-Arrays x1[] und x2[] werden zum Speichern der Koordinaten von Punkten auf der Linie verwendet.

  • Die Funktion numLines(int x1[],int y1[], int x2[], int y2[]) zählt die Anzahl der Linien, die durch einen einzelnen Punkt verlaufen.

  • Wenden Sie die Formel für jeden Punkt in x1[],y1[],x2[],y2[] an, um die Steigung zu berechnen, und verwenden Sie k, um die Steigungsanzahl zu erhöhen.

  • Das Array s[] speichert den Steigungswert.

    >
  • Gibt k als Anzahl der Zeilen im Ergebnis zurück.

Beispiel

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;
}
Nach dem Login kopieren

Ausgabe

Wenn wir den obigen Code ausführen, wird die folgende Ausgabe generiert:

Maximum distinct lines passing through a single point : 2
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonMaximale Anzahl unterschiedlicher Geraden durch einen Punkt in C. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage