2012-10-19 25 views
0

我在爲此分配創建算法時遇到問題。如果我能得到關於誰能夠從第一個算法開始的提示,我將不勝感激。創建算法以確定電源集中子集的大小

該任務的目標是實現和比較各種算法,用於計算給定集合的每種可能大小的子集數量。請記住,具有n個元素的集合具有2^n個子集。其中兩種算法將用於實際生成子集。 你的程序將有能力詢問用戶選擇,直到他/她希望退出。您的程序的GUI是允許的,但不是必需的。的選擇應允許:

  1. 投放效果基於計數從0開始(您可能不能夠使用C/C++/Java int數據類型)的所有2^n的整數,並確定算法子集的大小對應於每個數字。該算法必須以某種方式使用整數除法和模數。它需要返回一個數組,其中包含每個可能大小的子集數。顯示每個可能大小的子集數量。 n的值將由用戶輸入確定。錯誤檢查應該在n上執行。
  2. 運行基於從0開始計算所有2^n整數(可能無法使用C/C++/Java int數據類型)並確定與每個數字對應的子集大小的算法。該算法必須以某種方式使用位級操作(邏輯和移位)。它需要返回一個數組,其中包含每個可能大小的子集數。顯示每個可能大小的子集數量。 n的值將由用戶輸入確定。錯誤檢查應該在n上執行。

  3. 運行一個算法,該算法爲0和n(含)之間的所有k值生成C(n,k),其中n由用戶輸入確定。該算法需要利用遞歸階乘函數。它需要返回一個數組,其中包含每個可能大小的子集數。顯示每個可能大小的子集數量。錯誤檢查應該在n上執行。

  4. 運行一個算法,該算法爲0和n(含)之間的所有k值生成C(n,k),其中n由用戶輸入確定。該算法需要利用迭代因子算法。它需要返回一個數組,其中包含每個可能大小的子集數。顯示每個可能大小的子集數量。錯誤檢查應該在n上執行。

+3

噢耶!你使用哪本教科書親愛的? – Juvanis

+1

複製/粘貼學習:) –

+0

@Vincenzo Sanchez如果將複製粘貼作業中的作業分配到SO中成爲「聲明來源」的常見做法,這不是一種令人愉快的諷刺嗎? – WeirdlyCheezy

回答

0

我看到你所有的問題都是一個主題:遞歸回溯

進行發電設置了一組S的:

function rec(i) 
     if i == S.length 
     print choocen elements of S 
     return 
     else 
     do not chooce element i of S 
     rec(i + 1) 
     choose element i of S 
     rec(i + 1) 

C(n, k)的問題是相似的,一旦你瞭解遞歸的概念。我不會給你任務的解決方案:)