पूर्णांक के क्रमांक पर विचार करें 1
, ... n
, जैसे कि इसके लिए यह एक n = 6
:
[5,2,4,3,6,1]
आप से एक मानचित्रण के रूप में परिवर्तन देखते हैं, तो [1,2,3,4,5,6]
करने के लिए [5,2,4,3,6,1]
, परिवर्तन संबंध तोड़ना में decomponsed किया जा सकता है चक्र । एक चक्र तत्वों का एक सबसेट है जो एक दूसरे के लिए मैप करता है। उदाहरण के लिए, 1
मैप किया जाता है 5
, जिसे मैप किया जाता है 6
, जिसे वापस मैप किया जाता है 1
। तो एक चक्र है [1,5,6]
। अन्य चक्र हैं [2]
और [3,4]
। इस प्रकार इस क्रमपरिवर्तन के लिए चक्रों की संख्या है 3
।
सामान्य तौर पर, एक क्रमचय के चक्र अद्वितीय होते हैं (ऑर्डर करने के लिए), और आकार के क्रमचय के लिए चक्रों की संख्या n
भिन्न होती 1
है n
।
चुनौती
एक गैर-खाली क्रमचय को देखते हुए, इसके चक्रों की संख्या का उत्पादन।
इनपुट एक सरणी द्वारा गठित है n
पूर्णांकों 1
, 2
, ..., n
, जहां n > 0
। प्रत्येक पूर्णांक ठीक एक बार होता है। जिस क्रम में वे दिखाई देते हैं वह क्रमांकन को परिभाषित करता है, जैसा कि ऊपर दिए गए उदाहरण में है।
एक सरणी के बजाय आप एक सूची, संख्याओं के बीच एक विभाजक के साथ एक स्ट्रिंग, प्रत्येक नंबर के लिए एक अलग इनपुट या उचित है।
आकार के क्रमपरिवर्तन के लिए n
, पूर्णांक के 1-आधारित सेट के बजाय 1
, ..., n
आप लगातार 0-आधारित सेट 0
, ..., का उपयोग कर सकते हैं n-1
। यदि हां, तो कृपया अपने उत्तर में इसका संकेत दें।
एक समय से कम कहने पर कोड को उचित समय n
तक काम करना चाहिए 20
।
कोड गोल्फ। सभी भवन निर्माण की अनुमति दी।
परीक्षण के मामलों
यह 1-आधारित, सरणी इनपुट मानता है।
[1] -> 1
[3,2,1] -> 2
[2,3,4,5,1] -> 1
[5,2,4,3,6,1] -> 3
[8,6,4,5,2,1,7,3] -> 2
[4,5,11,12,7,1,3,9,10,6,8,2] -> 1
[4,2,5,11,12,7,1,3,9,10,6,8] -> 5
[5,8,6,18,16,9,14,10,11,12,4,20,15,19,2,17,1,13,7,3] -> 3
[14,5,17,15,10,18,1,3,4,13,11,16,2,12,9,7,20,6,19,8] -> 7
सम्बंधित
यह संबंधित चुनौती क्रमांकन के वास्तविक चक्रों की मांग करती है, उनकी संख्या नहीं। केवल चक्रों की संख्या की आवश्यकता से छोटे एल्गोरिदम हो सकते हैं जो वास्तविक चक्रों को उत्पन्न करते हैं।
1
, ..., सेट है n
। क्या आप स्पष्ट कर सकते हैं कि मानचित्रण एक इनपुट कैसे हो सकता है? क्या यह डेटा संरचना है?
dict
। मैं {1: 2, 2: 1}
इसके बजाय एक इनपुट के रूप में होना चाहता हूं [2, 1]
।