मुझे क्रमिक क्रमपरिवर्तन की गणना करने की आवश्यकता है। विधि हस्ताक्षर लगता है:आप एन के माध्यम से 0 के सभी संभावित क्रमपरिवर्तनों की गणना कैसे करेंगे?
int[][] permute(int n)
n = 3
के लिए उदाहरण के लिए, वापसी मान होगा:
[[0,1,2],
[0,2,1],
[1,0,2],
[1,2,0],
[2,0,1],
[2,1,0]]
आप सबसे कारगर तरीका संभव में iteratively ऐसा करने के बारे में कैसे जाना होगा? मैं इसे बार-बार कर सकता हूं, लेकिन मुझे इसे करने के कई वैकल्पिक तरीकों को देखने में दिलचस्पी है।
मैं अपने जवाब में उल्लेख किया है (के बाद मैं QuickPerm एल्गोरिथ्म का उपयोग करने के रूप में Uray सुझाव संपादित), सबसे कारगर तरीका पुनरावृति के लिए खत्म हो क्रमपरिवर्तन रहते होगा। एक पूरी सूची बनाना संभवतः बहुत उपयोगी नहीं है, क्योंकि आप वर्तमान पुनरावृत्ति को संसाधित कर सकते हैं। – Matthew
ठीक है, यही कारण है कि मैंने यूरे के उत्तर में रूबी कोड जोड़ा जो उपज और ब्लॉक का उपयोग करता है। यह अगली क्रमपरिवर्तन की गणना करने से पहले आपूर्ति कोड ब्लॉक में प्रत्येक क्रमपरिवर्तन पास करता है। –
यह प्रश्न और उत्तर देखें: http://stackoverflow.com/questions/352203/generating-permutations-lazily/ – ShreevatsaR