[এই প্রশ্নটি একটি স্ট্রিংয়ের রান গণনা করার জন্য অনুসরণ করা ]
p
স্ট্রিংয়ের সময়কালw
হ'ল ধনাত্মক পূর্ণসংখ্যাp
যেমনw[i]=w[i+p]
যখনই এই সমীকরণের উভয় পক্ষকে সংজ্ঞায়িত করা হয়। যাকper(w)
ক্ষুদ্রতম সময়ের মাপ চিহ্নিতw
। আমরা বলি যে একটি স্ট্রিংw
পর্যায়ক্রমিক if যদি হয়per(w) <= |w|/2
।
সুতরাং অনানুষ্ঠানিকভাবে পর্যায়ক্রমিক স্ট্রিং হ'ল একটি স্ট্রিং যা অন্য স্ট্রিং থেকে অন্তত একবার পুনরাবৃত্তি হয়। কেবলমাত্র জটিলতা হ'ল স্ট্রিংয়ের শেষে আমাদের যতক্ষণ না কমপক্ষে একবারে এর সম্পূর্ণতা পুনরাবৃত্তি হয় ততক্ষণ পুনরাবৃত্ত স্ট্রিংয়ের একটি সম্পূর্ণ অনুলিপি আমাদের প্রয়োজন হয় না।
উদাহরণস্বরূপ, স্ট্রিং বিবেচনা করুন x = abcab
। per(abcab) = 3
হিসাবে x[1] = x[1+3] = a
, x[2]=x[2+3] = b
এবং কোন ছোট সময়কাল আছে। স্ট্রিং abcab
তাই পর্যায়ক্রমিক নয়। যাইহোক, স্ট্রিং ababa
হিসাবে পর্যায়ক্রমিক হয় per(ababa) = 2
।
আরও উদাহরণ হিসাবে abcabca
, ababababa
এবং abcabcabc
পর্যায়ক্রমিক হয়।
যারা রেজেক্স পছন্দ করেন তাদের জন্য, এটি স্ট্রিং পর্যায়ক্রমিক কিনা তা সনাক্ত করে:
\b(\w*)(\w+\1)\2+\b
কাজটি হ'ল দীর্ঘতম স্ট্রিংয়ে সমস্ত সর্বাধিক পর্যায়ক্রমিক সাবস্ট্রিংগুলি সন্ধান করা। এগুলিকে মাঝে মাঝে সাহিত্যে রান বলা হয় ।
একটি সাবস্ট্রিং
w
একটি সর্বোচ্চ পর্যায় সাবস্ট্রিং (রান) যদি তা না হয় পর্যাবৃত্ত এবং কেউই নেইw[i-1] = w[i-1+p]
কিংবাw[j+1] = w[j+1-p]
। অনানুষ্ঠানিকভাবে, "রান" একই সময়ের সাথে বৃহত্তর "রান" তে অন্তর্ভুক্ত থাকতে পারে না।
যেহেতু দুটি রান সামগ্রিক স্ট্রিংয়ের বিভিন্ন স্থানে একই অক্ষরগুলির প্রতিনিধিত্ব করতে পারে, তাই আমরা অন্তর দিয়ে রানগুলি উপস্থাপন করব। অন্তর্বর্তী ক্ষেত্রে আবার উপরোক্ত সংজ্ঞা পুনরাবৃত্তি হয়।
স্ট্রিংয়ে একটি রান (বা সর্বাধিক পর্যায়ক্রমিক সাবস্ট্রিং) এর সাথে
T
একটি বিরতি[i...j]
হয়j>=i
such
T[i...j]
পিরিয়ড সহ একটি পর্যায়ক্রমিক শব্দp = per(T[i...j])
- এটি সর্বাধিক। সাধারণত, না হয়
T[i-1] = T[i-1+p]
নাT[j+1] = T[j+1-p]
। অনানুষ্ঠানিকভাবে, রান একই সময়ের সাথে বৃহত্তর রানের মধ্যে থাকতে পারে না।
RUNS(T)
স্ট্রিংয়ে রানের সেট দ্বারা চিহ্নিত করুন T
।
রানের উদাহরণ
চার সর্বোচ্চ পর্যায় সাবস্ট্রিং (রান) স্ট্রিং
T = atattatt
হয়T[4,5] = tt
,T[7,8] = tt
,T[1,4] = atat
,T[2,8] = tattatt
।স্ট্রিং
T = aabaabaaaacaacac
নিম্নলিখিত 7 সর্বোচ্চ পর্যায় সাবস্ট্রিং (রান) রয়েছে:T[1,2] = aa
,T[4,5] = aa
,T[7,10] = aaaa
,T[12,13] = aa
,T[13,16] = acac
,T[1,8] = aabaabaa
,T[9,15] = aacaaca
।স্ট্রিংটিতে
T = atatbatatb
নিম্নলিখিত তিনটি রান রয়েছে। এইগুলি হল:T[1, 4] = atat
,T[6, 9] = atat
এবংT[1, 10] = atatbatatb
।
এখানে আমি 1-ইনডেক্সিং ব্যবহার করছি।
কাজটি
কোড লিখুন যাতে প্রতিটি পূর্ণসংখ্যার জন্য 2 থেকে শুরু হয়ে, আপনি দৈর্ঘ্যের কোনও বাইনারি স্ট্রিংয়ে থাকা সংখ্যক রানের সর্বাধিক সংখ্যক আউটপুট n
।
স্কোর
আপনার স্কোরটি n
আপনি সর্বোচ্চ সর্বোচ্চ 120 সেকেন্ডে পৌঁছায় যে সবার জন্য k <= n
, আপনার চেয়ে উচ্চতর সঠিক উত্তর আর কেউ পোস্ট করেনি। স্পষ্টত যদি আপনার কাছে সর্বোত্তম উত্তর থাকে তবে n
আপনার পোস্টে সর্বাধিক স্কোর পাবেন score তবে, আপনার উত্তরটি সর্বোত্তম না হলেও, অন্য কেউ এটি পরাজিত করতে না পারলে আপনি এখনও স্কোরটি পেতে পারেন।
ভাষা ও গ্রন্থাগার
আপনার পছন্দ মতো যে কোনও উপলভ্য ভাষা এবং গ্রন্থাগার ব্যবহার করতে পারেন। যদি সম্ভব হয় তবে আপনার কোডটি চালাতে সক্ষম হওয়াই ভাল হবে সুতরাং যদি সম্ভব হয় তবে লিনাক্সে কীভাবে আপনার কোডটি চালাবেন / সংকলন করবেন তার সম্পূর্ণ ব্যাখ্যা অন্তর্ভুক্ত করুন।
অপটিমা উদাহরণ
নিম্নলিখিত ইন: n, optimum number of runs, example string
।
2 1 00
3 1 000
4 2 0011
5 2 00011
6 3 001001
7 4 0010011
8 5 00110011
9 5 000110011
10 6 0010011001
11 7 00100110011
12 8 001001100100
13 8 0001001100100
14 10 00100110010011
15 10 000100110010011
16 11 0010011001001100
17 12 00100101101001011
18 13 001001100100110011
19 14 0010011001001100100
20 15 00101001011010010100
21 15 000101001011010010100
22 16 0010010100101101001011
আমার কোড আউটপুট ঠিক কি করা উচিত?
প্রত্যেকটির জন্য n
আপনার কোডকে একটি একক স্ট্রিং আউটপুট করা উচিত এবং এতে থাকা রানগুলির সংখ্যা।
আমার মেশিনের সময়গুলি আমার মেশিনে চালিত হবে। এটি একটি এএমডি এফএক্স-8350 এইট-কোর প্রসেসরে একটি স্ট্যান্ডার্ড উবুন্টু ইনস্টল। এর অর্থ হল আপনার কোডটি চালাতে আমার সক্ষম হওয়া দরকার।
শীর্ষস্থানীয় উত্তর
- 49 সালে সি এন্ডারস ক্যাসরগ দ্বারা রচিত । একক থ্রেডেড এবং এল = 12 (2 গিগাবাইট র্যাম) দিয়ে চালান।
- 27 সিডলেনে সি ।
{0,1}
স্ট্রিংগুলি বিবেচনা করতে চান তবে দয়া করে স্পষ্ট করে বলুন। অন্যথায় বর্ণমালা সম্ভবত অসীম হতে পারে এবং আপনার টেস্টকেসগুলি কেন সর্বোত্তম হওয়া উচিত তা আমি দেখতে পাই না কারণ মনে হয় আপনি কেবল {0,1}
স্ট্রিংগুলিও অনুসন্ধান করেছেন।
n
পর্যন্ত স্ট্রিংগুলি অনুসন্ধান করেছি 12
এবং এটি বাইনারি বর্ণমালাটিকে কখনই পরাজিত করে না। তাত্পর্যপূর্ণভাবে আমি প্রত্যাশা করব যে বাইনারি স্ট্রিংটি সর্বোত্তম হওয়া উচিত, কারণ আরও অক্ষর যুক্ত করা একটি রানের সর্বনিম্ন দৈর্ঘ্য বৃদ্ধি করে।