Re: Генератор чисел для множества
От: Аноним  
Дата: 24.06.05 11:38
Оценка: 3 (1)
Здравствуйте, Grey2002, Вы писали:

G>Проблема такая — пусть имеется несколько (t) переменных, которые могут принимать значения от нуля до nt, где nt для каждой переменной своя. Необходимо найти все комбинации этих переменных, причем такие, чтобы их сумма была равна некоторому наперед заданному числу m.


public class Sum {
    final static int nt[] = {4, 5, 2};
    final static int m = 3;
    static int sum  = 0;
    static int p[];

    public static void gen(int k, int sum, int m) {
        if (k == nt.length-1) {
            p[k] = m;
            for (int i = 0; i < p.length; i++) {
                System.out.print(p[i] + " ");
            }
            System.out.println();
        } else {
            for (int i = Math.max(m-sum+nt[k], 0); i <= Math.min(m, nt[k]); i++) {
                p[k] = i;
                gen(k+1, sum-nt[k], m-i);
            }
        }
    }

    public static void main(String[] args) {
        if (nt.length > 0) {
            p = new int[nt.length];
            for (int i = 0; i < nt.length; i++) sum += nt[i];
            gen(0, sum, m);
        }
    }
}


0 1 2 
0 2 1 
0 3 0 
1 0 2 
1 1 1 
1 2 0 
2 0 1 
2 1 0 
3 0 0
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.