整数划分--计蒜客

这次程序5组数据只ac了两组,先传上来或许改进。明天蓝桥杯比赛,该复习之前写的程序了。

整数划分


package com.jsk.model;

import java.util.Scanner;

/**
 * 
 * @author yanzz
 * @编辑时间:2018年3月31日
 * @功能说明:整数划分将n划分成m个数
 * @version: 
 */

public class Main{

    public static void main(String[] args) {

	AA a = new AA();
	a.test();
    }
}

class AA {

    private int[] data = new int[10000];
    private int maxValue;
    private static int ans = 0;
    private int[] dp = new int[100];

    public void display(int k) {
	for (int i = 0; i < k; i++) {
	    System.out.printf("%d", data[i]);
	}
	System.out.println();
    }

    // m表示递归的层次
    public void split(int n, int m) {
	int i;
	if (n == 0 && m <= maxValue) {
	    // display(m);
	    ans++;
	} else {
	    for (i = n; i > 0; i--) {
		if (m == 0 || i <= data[m - 1]) {
		    data[m] = i;
		    split(n - i, m + 1);
		}
	    }
	}

    }

    public void test() {
	Scanner sc = new Scanner(System.in);

	int n = sc.nextInt();
	maxValue = sc.nextInt();
	split(n, 0);
	System.out.println(ans);
	sc.close();
    }

}

你可能感兴趣的:(练习题)