से दिए गए नंबर (दोहराए गए दोहराव के साथ) के सभी तरीकों का पता लगाएं एन तत्वों (जैसे [1,2]) एन तत्वों और एक संख्या 'के' (उदाहरण के लिए 6) को देखते हुए, सभी उत्पादन के तरीके खोजने के लिए योग = kदिए गए सेट
दिए गए उदाहरण उत्तर के लिए किया जाएगा 4 क्योंकि
1 1 1 1 1 1
1 1 1 1 2
1 1 2 2
2 2 2
एल्गोरिथ्म मैं है जानवर बल द्वारा, हम सब संभव परिदृश्यों अनुकरण के बारे में सोच सकता है, और रोक जब दिए गए राज्य से हम परिणाम नहीं पहुँच सकते हैं ।
arr[] = [1,2]
k = 6
globalCount =0;
function findSum(arr,k)
{
if(k ==0)
globalCount++
return
else if(k<0)
return
for each i in arr{
arr.erase(i)
tmp = k
findSum(arr,tmp)
while(k>=0){
findSum(arr,tmp -= i)
}
}
मुझे यकीन नहीं है कि मेरा समाधान वहां सबसे कुशल है या नहीं। कृपया बेहतर समाधान के लिए पॉइंटर्स टिप्पणी/सही या दिखाएं।
संपादित करें: अगर कोई मुझे मेरे कोड और उनके सोलन कोड की रनटाइम जटिलता दे सकता है तो वास्तव में सराहना करेगा। :) खान कोड जटिलता मुझे लगता है कि w = k/औसत बिग-O (n^डब्ल्यू) है (आगमन [0] .. आगमन [एन 1])
http://en.wikipedia.org/wiki/Partition_%28number_theory%29 –
[एक नंबर के विभाजन जनरेट कर रहा है] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/400794/generating- द-पार्टिशन-ऑफ-ए-नंबर) – templatetypedef