public class Test{
/*
* sum 共有sum中排序
* M,N左右括号的个数
*/
private static int sum = 0;
private static final int M = 4;
private static final int N = 4;
public static void main(String[] args) {
fun(M,N);
System.out.println(sum);
}
/*
* 判断这种排序是否成功
* m,n 表示还剩余的左右括号的个数
* 如果剩余的左括号比右括号多,说明先前的右括号比左括号多,那么这种排序就错误
* 如果左右括号没了,那么这种排序正确,sum 加1
*/
private static boolean isRight(int m,int n) {
if(m-n>0){
return false;
}else if(m==0 ||n == 0){
sum += 1;
return false;
}
return true;
}
private static boolean fun(int m, int n) {
InsertLeft(m-1,n);
InsertRight(m,n-1);
return true;
}
//插入左括号
private static void InsertLeft(int m,int n) {
if(isRight(m,n)){
fun(m,n);
}
}
//插入右括号
private static void InsertRight(int m,int n) {
if(isRight(m,n)){
fun(m,n);
}
}
}
//14种排序方法 |