मान लीजिए कि हमारे पास अलग-अलग पूर्णांकों का संग्रह है; हमें सभी संभावित क्रमपरिवर्तन खोजने होंगे। तो अगर सरणी [2,1,3] की तरह है, तो परिणाम [[1,2,3], [1,3,2], [2,1,3], [2,3,1] होगा ], [3,1,2], [3,2,1]]
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- हम पुनरावर्ती दृष्टिकोण का उपयोग करेंगे, इससे सूची, प्रारंभ, वक्र और पुन:बन जाएगी
- यदि प्रारंभ> सूची की लंबाई -1, फिर रेस में curr जोड़ें, और वापस लौटें
- के लिए मैं श्रेणी में दी गई सूची की लंबाई शुरू करने के लिए - 1
- सूचकांक प्रारंभ में मौजूद सूची के तत्वों को स्वैप करें और (प्रारंभ + (i - प्रारंभ))
- क्रमपरिवर्तन (सूची, प्रारंभ + 1, curr + [सूची [प्रारंभ]], res)
- सूचकांक प्रारंभ में मौजूद सूची के तत्वों को स्वैप करें और (प्रारंभ + (i - प्रारंभ))
- शुरुआत में क्रमपरिवर्तन को कॉल करें(arr, 0, [], res)
उदाहरण (पायथन)
एक बेहतर समझ प्राप्त करने के लिए आइए निम्नलिखित कार्यान्वयन को देखें -
class Solution(object): def permute(self, nums): result = [] self.permute_util(nums,0,[],result) return result def permute_util(self,given_list,start,curr,result): if start > len(given_list)-1: #print(curr) result.append(curr) return for i in range(start,len(given_list)): self.swap(given_list,start,start+(i-start)) self.permute_util(given_list,start+1,curr+[given_list[start]],result) #print(given_list) self.swap(given_list, start, start + (i - start)) def swap(self,nums,index1,index2): temp = nums[index1] nums[index1] = nums[index2] nums[index2] = temp ob1 = Solution() print(ob1.permute([1,2,3,4]))
इनपुट
[1,2,3,4]
आउटपुट
[[1,2,3,4],[1,2,4,3],[1,3,2,4],[1,3,4,2],[1,4,3,2],[1,4,2,3],[2,1,3,4],[2,1,4,3],[2,3,1,4],[2,3,4,1],[2,4,3,1],[2,4,1,3],[3,2,1,4],[3,2,4,1],[3,1,2,4],[3,1,4,2],[3,4,1,2],[3,4,2,1],[4,2,3,1],[4,2,1,3],[4,3,2,1],[4,3,1,2],[4,1,3,2],[4,1,2,3]]