C(n,m)如何计算?
我们都知道公式:C(n,m)=C(n,m-1)+C(n-1,m-1)。这当然可以用递归实现,但我们发现用二维数组更好,因为这分明就是一个动态方程嘛。
public int calcChoose(int n, int m){ int c[][]=new int[n+1][n+1]; for(int i=1;i<=n;i++){ c[i][0]=1; for(int j=1;j<=i;j++){ c[j][j]=1; c[i][j]=c[i-1][j-1]+c[i-1][j]; } } for(int i=1;i<=n;i++){ for(int j=1;j<=i;j++){ System.out.print(c[i][j]+" "); } System.out.println(); } return c[n][m]; }