import java.math.BigInteger;
/**
问题描述:
n个元素的出栈次序
f(n)=f(0)*f(n-1)+f(1)*f(n-2)...+f(n-2)*f(1)+f(n-1)*f(0)
输出样例:
0:1
1:1
2:2
3:5
4:14
5:42
6:132
7:429
8:1430
9:4862
10:16796
11:58786
12:208012
13:742900
14:2674440
15:9694845
16:35357670
17:129644790
18:477638700
19:1767263190
20:6564120420
* @author Vivinia
*/
public class StackNum {
static BigInteger[] num=new BigInteger[101]; //使用数组存储之前计算过的数据
public static void main(String[] args) {
for(int i=0;i<=100;i++)
num[i]=BigInteger.valueOf(0); //先全部赋值为0
num[0]=BigInteger.valueOf(1);
for(int i=0;i<=100;i++)
System.out.println(i+":"+f(i));
}
private static BigInteger f(int n) {
BigInteger total=BigInteger.valueOf(0);
if(n==0)
return num[0]; //0是退出递归的边界条件
if(num[n]!=BigInteger.valueOf(0))
return num[n]; //判断以前是否计
算法-栈的出栈个数
最新推荐文章于 2024-05-10 23:37:18 发布