⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 choose.java

📁 java web 开发,Java Xml 编程指南书籍源码
💻 JAVA
字号:
package MyNa.utils;

import java.math.BigInteger;
import java.util.*;
public class Choose extends Cache {

/*
choose(n,k)=0, if(k>n or k<0)
           =1, if(n==k or k==0)
            choose(n-1,k)+choose(n-1,k-1) otherwise
*/


public BigInteger biV(int n){  // big-integer value conversion
  return BigInteger.valueOf(n);
}


public BigInteger choose1(int n, int k)
        throws ArithmeticException{ // traditional recursive answer.
  if(n<k || k<0)return biV(0);
  if(n==k || k==0)return biV(1);
  return choose1(n-1,k).add(choose1(n-1,k-1));
}


public BigInteger choose(int n,int k)
      throws ArithmeticException{
  BigInteger biN=biV(n); BigInteger biK=biV(k); 
  BigInteger R=(BigInteger)get(biN,biK);
  if(null!=R)return R;
  if(n<k || k<0)R=biV(0);
  else if(n==k || k==0)R= biV(1);
  else R= choose(n-1,k).add(choose(n-1,k-1));
  return (BigInteger)put(biN,biK,R);
}

private static Cache instance=null; // the one and only class instance
private static int clients=0;       // how many are asking us?

protected void init(){super.init();}  // e.g., register, init logger
 
public static synchronized Cache getInstance(){ 
  if(null==instance)instance=new Choose();
  clients++;
  return instance;
}

public static synchronized int freeInstance(){ 
  if(null==instance)return 0;
  clients--;
  if(clients==0)close(); // all gone, and the cache with it.
  return clients;
}

public static synchronized boolean close(){ 
  clients=0;instance=null;
  return true;
}


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -