3535298_ac_219ms_3552k.java

来自「北大大牛代码 1240道题的原代码 超级权威」· Java 代码 · 共 52 行

JAVA
52
字号
import java.util.*;

public class Main {
	private Scanner in;
	private long [][] upd;

	public static void main(String [] args) {
		new Main().run();
	}

	private void init() {
		upd = new long [232][];

		for (int i = 1; i < 232; i++) {
			upd[i] = new long [i + 1];
			upd[i][0] = upd[i][i] = 1;
		}
		for (int i = 2; i < 232; i++) {   
			for (int j = 1; j < i; j++) {   
				if (i - j * 2 < 0) {
					upd[i][j] = 0;
				} else {
					if (i - j * 2 == 0) {
						upd[i][j] = 1;
					} else {
						int tmp = i - j * 2;
						upd[i][j] = 0;
						for (int k = j; k <= tmp; k++) {
							upd[i][j] += upd[tmp][k];
						}
					}
				}
				upd[i][0] += upd[i][j];
			}
			upd[i][i] = 1;
		}
	}

	private void run() {
		init();
		int n;
		in = new Scanner (System.in);

		while (true) {
			n = in.nextInt();
			if (n == 0) {
				break;
			}
			System.out.println(n + " " + upd[n][0]);
		}
	}
}

⌨️ 快捷键说明

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