2014-04-19 49 views
-9

我們考慮以下情況的數量: 假設你有一個整數k和n爲整數。現在我們需要編寫一個函數來確定這些數據是否可以將k的數量作爲數字子集的總和。它必須以遞歸方式運行。 例如輸入:總結到指定值

IN: 
k: 12 
14 25 36 8 78 15 26 
OUT: 
NO 
k: 118 
14 25 36 8 78 15 26 1 2 7 
YES, 78+14+26 
+1

-1是什麼問題? (無論如何,谷歌分區) –

+0

你偶然發現的東西叫做[揹包問題](http://en.wikipedia.org/wiki/Knapsack_problem)。 – fredoverflow

+0

如果您發佈了您嘗試過的代碼,我們可能會提供幫助! – Luigi

回答

0

如果你可以複製/粘貼您的任務/面試問題,沒有任何背景,那麼我可以做一個Web解決方案一樣...

/* Returns true if the there is a subarray of arr[] with sum equal to 'sum' 
    otherwise returns false. Also, prints the result */ 
int subArraySum(int arr[], int n, int sum) 
{ 
    int curr_sum, i, j; 

    // Pick a starting point 
    for (i = 0; i < n; i++) 
    { 
     curr_sum = arr[i]; 

     // try all subarrays starting with 'i' 
     for (j = i+1; j <= n; j++) 
     { 
      if (curr_sum == sum) 
      { 
       printf ("Sum found between indexes %d and %d", i, j-1); 
       return 1; 
      } 
      if (curr_sum > sum || j == n) 
       break; 
      curr_sum = curr_sum + arr[j]; 
     } 
    } 

    printf("No subarray found"); 
    return 0; 
} 

來源:http://www.geeksforgeeks.org/find-subarray-with-given-sum/

PS:我沒有足夠的積分發表評論。