COND - Quan hệ

Tác giả: khuc_tuan

Ngôn ngữ: Java

import java.io.*;

public class Main {
	long[][] f, c;
	void init(){
		int i,j,l;
		f = new long[20][20];
		c = new long[20][20];
		for(i=1;i<=10;++i)
			for(j=1;j<=10;++j) c[i][j]=0;
		c[1][1] = 1;
		for(i=1;i<=10;++i) c[0][i] = 1;
		for(i=2;i<=10;++i)
			for(j=1;j<=i;++j) c[j][i] = c[j-1][i-1]+c[j][i-1];
		for(i=1;i<=10;++i)
			for(j=1;j<=i;++j) f[i][j]=0;
		f[1][1] = 1;
		for(i=2;i<=10;++i){
			f[i][1] = 1;
			for(j=2;j<=i;++j)
				for(l=1;l<=i-j+1;++l)
					f[i][j] += f[i-l][j-1]*c[l][i];
		}
	}
	long cal(int n){
		long r=0;
		for(int j=1;j<=n;++j) r+= f[n][j];
		return r;
	}
	void run() throws Exception{
		BufferedReader kb = new BufferedReader(new InputStreamReader(System.in));
		init();
		while(true){
			int n = Integer.parseInt(kb.readLine());
			if(n==-1) break;
			System.out.println(cal(n));						
		}
	}
	public static void main(String[] Args) throws Exception{
		new Main().run();
	}

}

Download