誰能告訴我如何解決這個問題的一些輕?
我有喜歡 一些值的字符串「{1,2,3}」用逗號分隔每個數字 現在與字符串我需要生成一個新的字符串...新的字符串應該像 「{},{1},{2},{3},{1,2},{1,3},{2,3},{1,2,3}」
做你的頭,但我不知道如何使它與算法工作 任何人都可以解釋我應該做什麼?
我不想要代碼,只是請解釋一下如何去做。 我在想遞歸...但我不能想辦法
誰能告訴我如何解決這個問題的一些輕?
我有喜歡 一些值的字符串「{1,2,3}」用逗號分隔每個數字 現在與字符串我需要生成一個新的字符串...新的字符串應該像 「{},{1},{2},{3},{1,2},{1,3},{2,3},{1,2,3}」
做你的頭,但我不知道如何使它與算法工作 任何人都可以解釋我應該做什麼?
我不想要代碼,只是請解釋一下如何去做。 我在想遞歸...但我不能想辦法
首先,你需要迭代整數0到N,其中N是你的字符串中的值的數量(我們稱之爲迭代變量i
)。對於每個i
,您將在輸入中生成所有包含i
的數字,其中包含N
數字。
例如,i == 0
將生成{}
,i == 1
將生成{1},{2},{3}
等
現在,讓我們假設的i
值是固定的;這將讓我們繼續理解爲這些迭代中的每一個做什麼。很明顯,我們需要某種嵌套循環,因爲我們將爲每個值i
生成多個(在一般情況下)輸出值(例如,如前所示,我們將在i == 1
時生成3個集合)。
這叫做生成組合i
項目出N
,並有大量的文件可用。例如,請參閱Algorithm to return all combinations of k elements from n。
對於另一種方法,將問題視爲二進制問題。你的設置有三個元素,所以你需要三個二進制數字。該集合中的每個成員可以在結果中出現(1
)或不存在(0
)。因此可以將所需的結果映射到3位二進制數:
000 -> {}
001 -> {3}
010 -> {2}
011 -> {2, 3}
100 -> {1}
101 -> {1, 3}
110 -> {1, 2}
111 -> {1, 2, 3}
不難從0(000
)至7(111
)產生的數量和從中提取所需要的組合。
我認爲你需要解釋你試圖產生什麼樣的模式?看起來像輸入 –
的所有唯一排序的子字符串應{2,3}在新字符串中?這基本上是從一個集合中產生所有的子集? PS。這是作業嗎? –
您是否正在尋找輸出列表中項目的每個排列的邏輯,同時保留項目的順序?如果是這樣,你是否意外省略{2,3}? – nycdan