[JAVA] Faisons une combinaison sans duplication | Premièrement, calculons le nombre total

Je crée un programme qui demande une combinaison.

100C9 essaie d'énumérer les combinaisons uniques avec le plus grand motif. Tout d'abord, le nombre total de motifs a été calculé par traitement à l'aide de la formule graduelle habituelle.

Trouvez le nombre total de modèles nCr en utilisant l'équation graduelle

private static long calcNumOfCombination(int n, int r){
	r = Math.min(r, n - r);
	if (r == 1) {
		return n;
	}

	long sum = 1;
	for (int i = 1; i <= r; i++) {
		sum = sum * (n - i + 1) / i;
	}
	return sum;
}

//Nombre total de motifs lors de la sélection de 9 éléments sur 100
System.out.println(calcNumOfCombination(100, 9));

Résultat d'exécution


1902231808400

Combien de chiffres? Je ne sais pas parce que je ne veux pas compter. Le but n'est pas de lister les combinaisons, Après avoir énuméré les données de ces nombreux modèles, nous faisons quelque chose tout en effectuant le traitement d'origine.

Le processus d'origine est simple, j'ai donc du mal à les énumérer.

Bien sûr, l'énumération est très facile si vous préparez une méthode de traitement distincte pour plusieurs boucles de Gorigori pour chaque numéro de sélection R donné sans utiliser de récursif, et changez la méthode à appeler en fonction du nombre de R. Ouaip. .. ..

J'ai essayé la reconnaissance de la queue à Java en imitant l'apparence

Il ne tombe pas même s'il est traité de manière récursive. Je suis surpris.

Recommended Posts

Faisons une combinaison sans duplication | Premièrement, calculons le nombre total
Si le produit total des n premiers nombres premiers plus 1 est un nombre premier
Trouvez le reste divisé par 3 sans utiliser de nombre
Faisons une application de calcul avec Java ~ Afficher la fenêtre de l'application
Améliorons l'application
Faisons un custom_cop qui souligne le tremblement du nom