Я ищу некоторую помощь с моим назначением программирования Java. Используя связанный список, мне нужно распечатать его набор мощности. Например, набор {1,2,3} должен распечатывать {{}, {1} {1,2} {1,3} {1,2,3} {2} {2,3} {3 }}. Число элементов в множестве мощности равно 2^n. Это нужно сделать, позвонив по телефону HeadNode.PrintPowerSet();
где HeadNode - это первый элемент в связанном списке. Я пробовал несколько вещей, и ничего не работает так хорошо. Я думаю, что лучший способ сделать это - вызывать метод рекурсивно до тех пор, пока не будет достигнут конечный дозор, а затем работать назад, добавив оставшиеся элементы. Извините, я не могу опубликовать больше кода или больше идей, потому что ничего, что я пробовал, так хорошо работает. Заранее спасибо.Поиск набора параметров из связанного списка
EDIT: Это нерабочий код. Она возвращает множество {{1,2,3} {2,3} {3}}
public RSet powerSet()
{
if (this == EMPTY_SET)
return EMPTY_SET;
RSet q = new RSet();
if (q != EMPTY_SET)
q.next = next.powerSet();
q = new RSet(this, n, q.next);
return q;
}
EMPTY_SET конец сторожевого. Я пробовал написать его вручную. Это помогает, но я до сих пор не могу это получить. Также этот класс, RSet, по существу является только связанным узлом списка.
Опубликуйте свой нерабочий код. –
[Этот ответ] (http://stackoverflow.com/a/1670871/828193) делает это с помощью 'Set'. Я думаю, вы могли бы легко адаптировать его, чтобы использовать ссылку «LinkedList» – user000001
. Подсказка: вставьте пустой элемент внутри списка, так что вы будете иметь элементы «n + 1». Затем сделайте рекурсивную функцию, которая перебирает все элементы в списке (включая пустую), и находит все три возможности комбинации. Например: {Empty, Empty, 1} будет {1} .. – Shivam