एक psuedocode कार्यान्वयन, तथ्य यह है कि स्ट्रिंग के हर हिस्से में एक शब्द भी होने की जरूरत है शोषण, हम कुछ भी नहीं जा सकते हैं। हम स्ट्रिंग की शुरुआत से आगे काम करते हैं जब तक कि पहला बिट एक शब्द न हो, और फिर शेष स्ट्रिंग के सभी संभावित संयोजन उत्पन्न करें। एक बार ऐसा करने के बाद, हम तब तक चलते रहते हैं जब तक कि हमें पहले शब्द के लिए कोई अन्य संभावनाएं न मिलें, और इसी तरह। ["for", "ever", allPossibleWords["carrot"]]
में ["forever", allPossibleWords["carrot"]]
में एक बार और एक बार - अपने उदाहरण में, आप दो बार allPossibleWords("carrot")
गणना करने के लिए हो रही अंत होगा -
allPossibleWords(string s, int startPosition) {
list ret
for i in startPosition..s'length
if isWord(s[startPosition, i])
ret += s[startPostion, i] * allPossibleWords(s, i)
return ret
}
इस कोड में डरावना है कि आप गणना दोहरा खत्म करेंगे। तो यह याद रखना कुछ विचार करना है।
स्रोत
2011-01-21 03:51:44
आपका ब्रूट-बल दृष्टिकोण सही है। कल्पना कीजिए कि आपको एक विदेशी भाषा में शब्दों के अनुरोध के अलावा एक ही समस्या दी गई थी। – Apalala