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); } }
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); } }
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;}//回溯 } } }
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!