পূর্ণসংখ্যার ক্রমবিন্যাস বিবেচনা করুন 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
সম্পর্কিত
এই সম্পর্কিত চ্যালেঞ্জটি ক্রমটির প্রকৃত চক্রের জন্য জিজ্ঞাসা করে, তাদের সংখ্যা নয়। শুধুমাত্র চক্রের সংখ্যার প্রয়োজন হলে সংক্ষিপ্ত অ্যালগোরিদম হতে পারে যা আসল চক্র উত্পন্ন করতে পারে sides
1
, ..., n
এই ক্রমে। আপনি কী ব্যাখ্যা করতে পারেন যে ম্যাপিং কীভাবে ইনপুট হতে পারে? এটি কি ডেটা স্ট্রাকচার?
dict
। আমি {1: 2, 2: 1}
পরিবর্তে একটি ইনপুট হিসাবে পেতে চাই [2, 1]
।