我正在尋找一些幫助我的Java編程任務。使用鏈表,我需要打印出其功率集。例如,集合{1,2,3}應打印出 {{},{1} {1,2} {1,3} {1,2,3} {2} {2,3} {3 }}。功率集中的元素數量是2^n。 這需要通過調用 HeadNode.PrintPowerSet();
其中HeadNode是鏈表中的第一個元素。 我已經嘗試了一些東西,沒有什麼工作很好。我認爲最好的方法是遞歸調用該方法,直到達到最終標記,然後向後工作,添加剩下的元素。對不起,我不能發佈更多的代碼或更多的想法,因爲我沒有試過的東西已經很好地工作了。提前致謝。編輯: 這是非工作代碼。它返回集合{{1,2,3} {2,3} {3}}從鏈接列表中查找powerset
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本質上只是一個鏈表節點。
發佈您的非工作代碼。 – 2013-02-11 18:15:31
[這個答案](http://stackoverflow.com/a/1670871/828193)使用'Set'來做它。我想你可以很容易地使用它來使用'LinkedList' – user000001 2013-02-11 18:20:27
提示:在列表中插入一個空元素。所以你將有'n + 1'元素。然後創建一個遞歸函數,遍歷列表中的所有元素(包括空的元素),並找到所有三種可能的組合。例如:{Empty,Empty,1}將爲{1} .. – Shivam 2013-02-11 18:21:04