一块药看成括号配对就行了。很明显的直接求卡特兰数。
今晚看了HDU 3240的题,有一点思路,但无情的TLE。想不到什么好方法了,看了别人的解答,哇。。。简直是天才的做法啊。。。。留到星期六自己思考一遍再重新写。
import java.math.BigDecimal; import java.math.BigInteger; import java.util.Scanner; import java.io.InputStreamReader; public class Main{ public static void main(String args[]){ Scanner in=new Scanner(System.in); BigInteger ans[]=new BigInteger[35]; ans[1]=BigInteger.valueOf(1); for(int i=2;i<35;i++){ ans[i]=ans[i-1].multiply(BigInteger.valueOf(4*i-2)).divide(BigInteger.valueOf(i+1)); } while(in.hasNext()){ int x=in.nextInt(); if(x==0) break; System.out.println(ans[x]); } } }