3-4 多重幂计数问题
问题描述
设给定n个变量x1,x2,…,xn。将这些变量依序作底和各层幂,可得n重幂如下
这里将上述n重幂看作是不确定的,当在其中加入适当的括号后,才能成为一个确定的n重幂。不同的加括号方式导致不同的n重幂。例如,当n=4时,全部4重幂有5个。
对n个变量计算出有多少个不同的n重幂。
Java: version 1
import java.util.Scanner;
public class DuoChongMiJiShu {
public static void main(String[] args){
int n;
int[] A;
int i, j;
Scanner input = new Scanner(System.in);
while (true){
n = input.nextInt();
A = new int[n];
for(i=1; i<=n-1; i++)
A[i] = 0;
A[0] = 1;
for(i=1; i<=n-1; i++)
for(j=1; j<=i; j++)
A[j] = A[j] + A[j-1];
System.out.println(A[n-1]);
}
}
}
Java: version 2
import java.util.Scanner;
public class DuoChongMiJiShu1 {
public static void main(String[] args){
int n;
int[] P;
Scanner input = new Scanner(System.in);
while (true){
n = input.nextInt();
P = new int[n+1];
P[1] = 1;
for(int i=2; i<=n; i++)
for(int k=1; k<i; k++)
P[i] += P[k] * P[i-k];
System.out.println(P[n]);
}
}
}
Input & Output
1
1
2
1
3
2
4
5
5
14
6
42
7
132
8
429
9
1430
可见,输出为 Catalan数,该问题当可转化为 Catalan数问题。
Reference
王晓东《计算机算法设计与分析》(第3版)P89

本文探讨了多重幂计数问题,详细解释了如何计算不同变量的n重幂数量。通过两个Java版本的实现展示了求解方法,并指出问题与Catalan数的联系,提供了一个经典算法设计案例。
797

被折叠的 条评论
为什么被折叠?



