public class realQuestion
/*
* 三、m个A 和 n个B能够组成多少个排列
* 例1:AAAB
* AAAB AABA ABAA BAAA
*
* 例2:AABB
* AABB BAAB BABA BBAA ABAB ABBA
* 思路: 通过上面的两个例子我们可以发现,我们可以将得到的排列组合分为两个
* 阵营,一个是首字符是A的,一个是首字符是B的。
* 此时我们试想一下,如果首字符是A的是确定的,那么就会剩下m-1个A和n个B进行排列组合;
* 如果首字符是B的,那么我们就会剩下m个A和n-1个B进行排列组合.
* 所以:f2(m-1, n) + f2(m, n-1) 就会得到所有的排列组合,当m = 0 或 n = 0时
* 只有一种排列组合方式,所以出口就是(m == 0 || n ==0)
*/
public static int f2(int m, int n) {
if(m == 0 || n ==0) return 1; //出口
return f2(m-1, n) + f2(m, n-1);
}
public static void main(String[] args) {
System.out.println(f2(3,2));
}
}
递归:求m个A 和 n个B 排列组合的个数
最新推荐文章于 2023-01-15 22:28:10 发布