Maison > développement back-end > C++ > le corps du texte

Nombre maximum de droites distinctes passant par un point de C

WBOY
Libérer: 2023-08-26 10:25:06
avant
1154 Les gens l'ont consulté

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)
Copier après la connexion

Sortie

Maximum lines: 2
Copier après la connexion
Copier après la connexion

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)
Copier après la connexion

Sortie

Maximum lines: 2
Copier après la connexion
Copier après la connexion

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;
}
Copier après la connexion

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
Copier après la connexion

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!

source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal