Номер подмножества - PullRequest
       19

Номер подмножества

0 голосов
/ 25 апреля 2020
class Solution {
    int f(int[] a, int s, int n) {
        if (n == 0)
            return s;
        return f(a, s + 1, n - 1) + f(a, s, n - 1);
    }
}

class Test {
    public static void main(String[] args) {
        int[] a = { 1, 1, 2, 3 };
        System.out.println(new Solution().f(a, 0, a.length));
    }
} 

Я написал код для печати номера подмножества, в каждом индексе у меня есть два варианта: включать a [i] в ​​подмножество или нет, для этого я добавляю 1 к s, когда элемент должен быть включенным, но этот подход дает неправильный ответ. Почему это неправильно?

1 Ответ

0 голосов
/ 25 апреля 2020
Math.pow(2, a.length) 

было бы очевидным решением для этого. но если вы действительно хотите найти его таким образом, он должен «возвращать 1» вместо «return s», поскольку каждый раз, когда он достигает нуля, это означает, что ни одного элемента не осталось, то есть пустой список, таким образом 1.

...