Maison >développement back-end >C++ >Nombre maximum de droites distinctes passant par un point de C

Nombre maximum de droites distinctes passant par un point de C

WBOY
WBOYavant
2023-08-26 10:25:061222parcourir

Nombre maximum de droites distinctes passant par un point de C

On obtient le numéro N pour chaque ligne et les coordonnées des deux points (x1,y1) et (x2,y2). Le but est de trouver le nombre maximum de lignes droites à partir des lignes droites données qui peuvent passer par un seul point de telle sorte qu'aucune ligne droite ne se recouvre et qu'aucune rotation ne soit effectuée.

Nous représenterons la ligne droite comme (paire) m,c) où y=mx+c,m est la pente m=y2-y1/x2-x1

Étant donné c1!=c2, les lignes avec le même m sont parallèle de. Nous calculerons différentes pentes en mètres. Pour une droite verticale, si x1=x2, alors pente = INT_MAX, sinon m.

Comprenons-nous à travers des exemples.

Entrée

Line 1 (x1,y1)=(4,10) (x2,y2)=(2,2)
Line 2 (x1,y1)=(2,2) (x2,y2)=(1,1)

Sortie

Maximum lines: 2

Explication - Le nombre de bus est de 2. Les pentes des deux lignes sont différentes.

Entrée

Line 1 (x1,y1)=(1,5) (x2,y2)=(3,2)
Line 2 (x1,y1)=(2,7) (x2,y2)=(2,8)

Sortie

Maximum lines: 2

Description - Le nombre de bus est de 2. Les deux ont des pentes différentes.

Les méthodes utilisées dans le programme ci-dessous sont les suivantes

  • Les tableaux d'entiers x1[] et x2[] sont utilisés pour stocker les coordonnées des points sur la ligne.

  • La fonction numLines(int x1[],int y1[], int x2[], int y2[]) compte le nombre de lignes passant par un seul point.

  • Appliquez la formule pour chaque point dans x1[],y1[],x2[],y2[] pour calculer la pente et utilisez k pour incrémenter le nombre de pentes.

  • Le tableau s[] stocke la valeur de la pente.

    >
  • Renvoie k comme nombre de lignes dans le résultat.

Exemple

Démo en direct

#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

Si nous exécutons le code ci-dessus, il générera la sortie suivante -

Maximum distinct lines passing through a single point : 2

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer