Maison > Java > javaDidacticiel > Solution au problème d'arrangement de combinaison en Java

Solution au problème d'arrangement de combinaison en Java

高洛峰
Libérer: 2017-03-09 18:58:11
original
1396 Les gens l'ont consulté

Cet article présente comment résoudre le problème de combinaison en Java

1.

Sélectionnez 2 personnes sur 4 pour participer à l'événement. Il y a 6 choix au total.

Combien de façons existe-t-il pour choisir m personnes parmi n personnes pour participer à l'événement ?

C(m/n)=C((m-1)/(n-1)) C(m/(n-1)) Algorithme mathématique


public class Main {	
	public static void main(String[] args) {
		System.out.println("请输入总人数:");
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		System.out.println("请输入选择人数:");
		int m=sc.nextInt();
		System.out.println("一共有"+fun(n,m)+"种方法!");
	}	
	private static int fun(int n, int m) {		
		if(m>n)return 0;		
		if(m==0)return 1; 		
		return fun(n-1,m-1) + fun(n-1,m);
	}
}
Copier après la connexion

2.

Le problème du calcul du nombre d'arrangements de 3 A et 2 B pouvant être formés (tels que : AAABB, AABBA ) est le domaine de recherche de la « Combinatoire »

. Mais dans certains cas, la vitesse de calcul rapide des ordinateurs peut également être utilisée pour résoudre des problèmes grâce à un raisonnement intelligent.

Le programme suivant calcule le nombre d'arrangements différents m A et n B pouvant être combinés. S'il vous plaît, améliorez-le.

A(n/m)=A(n/(m-1)) A((n-1)/m)


public class Main {
	public static void main(String[] args) {
		int m=3;
		int n=2;
		System.out.println(pailie(m, n));
	}
	public static int pailie(int m,int n){	
		if (m==0||n==0)return 1;	
		return pailie(m-1,n)+pailie(m, n-1); 
	}
}
Copier après la connexion

Méthode 2

public class Main {
	public static void main(String[] args) {
		char[] date="ABC".toCharArray();
		f(date,0);
	}
	private static void f(char[] date, int k) {	
		if (k==date.length) {
			for (int i = 0; i < date.length; i++) {
				System.out.print(date[i]+" ");
			}
			System.out.println();
		}	
		for (int i = k; i < date.length; i++) {
			{char t=date[k];date[k]=date[i];date[i]=t;}//试探		
			f(date,k+1);		
			{char t=date[k];date[k]=date[i];date[i]=t;}//回溯
		}	
	}
}
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!

Étiquettes associées:
source:php.cn
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