ধরুন প্রথম সারিতে, আমাদের একটি 0 আছে। এখন প্রতিটি পরবর্তী সারিতে, আমরা আগের সারির দিকে তাকাই এবং 0 বাই 01 এর প্রতিটি ঘটনা এবং 1 বাই 10 এর প্রতিটি ঘটনা প্রতিস্থাপন করি। ধরুন আমাদের এন সারি এবং সূচক K আছে, আমরা সারিতে K-তম সূচীযুক্ত চিহ্নটি খুঁজে বের করতে হবে। তাই যদি N =4 এবং K =5, তাহলে আউটপুট হবে 1। এর কারণ −
- সারি 1:0
- সারি 2:01
- সারি 3:0110
- সারি 4:01101001
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- ধরুন পদ্ধতিটির নাম kthGrammar। এর জন্য N এবং K লাগে।
- যদি N 1 হয়, তাহলে 0 ফেরত দিন
- যদি k জোড় হয়, 1 ফেরত দিন যখন kthGrammar(N – 1, K/2) 0 হয়, অন্যথায় 0
- অন্যথায় kthGrammar (N – 1, (K + 1)/2) ফেরত দিন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
int kthGrammar(int N, int K) {
if(N == 1) return 0;
if(K % 2 == 0){
return kthGrammar(N - 1, K / 2) == 0 ? 1 : 0;
}else{
return kthGrammar(N - 1, (K + 1) / 2);
}
}
};
main(){
Solution ob;
cout << (ob.kthGrammar(4, 5));
} ইনপুট
4 5
আউটপুট
1