এখানে আমরা একটি আকর্ষণীয় সমস্যা দেখতে পাব। ধরুন একটি বাইনারি অ্যারে n আকারের দেওয়া হয়েছে। এখানে n> 3. একটি সত্য মান বা 1 মান নির্দেশ করে যে সক্রিয় অবস্থা, এবং 0 বা মিথ্যা নিষ্ক্রিয় নির্দেশ করে। আরও একটি নম্বর k দেওয়া আছে। আমাদের কে দিন পর সক্রিয় বা নিষ্ক্রিয় কোষ খুঁজে বের করতে হবে। ith কোষের দৈনন্দিন অবস্থার পরে সক্রিয় হবে যদি বাম এবং ডান কোষ একই না হয়, যদি তারা একই হয়, তাহলে এটি নিষ্ক্রিয় হবে। সবচেয়ে বাম এবং ডান সর্বাধিক সেল এর আগে এবং পরে কোন সেল নেই। তাই বাম এবং ডান অধিকাংশ সেল সবসময় 0 হয়.
ধারণা পেতে আসুন একটি উদাহরণ দেখি। ধরুন একটি অ্যারে হল {0, 1, 0, 1, 0, 1, 0, 1}, এবং k =3 এর মান। তাহলে দেখা যাক কিভাবে এটি দিনে দিনে পরিবর্তিত হয়।
- 1 দিন পর অ্যারে হবে {1, 0, 0, 0, 0, 0, 0, 0
- 2 দিন পর অ্যারে হবে {0, 1, 0, 0, 0, 0, 0, 0
- 3 দিন পর অ্যারে হবে {1, 0, 1, 0, 0, 0, 0, 0
তাই 2টি সক্রিয় কোষ এবং 6টি নিষ্ক্রিয় কোষ
অ্যালগরিদম
activeCellKdays(arr, n, k)
1 থেকে k রেঞ্জের i এর জন্য temp-এ arr-এর একটি কপি তৈরি করা শুরু করুন, temp[0] :=0 XOR arr[1] temp[n-1] :=0 XOR arr[n-2] প্রতিটির জন্য সেল i 1 থেকে n-2 পর্যন্ত, temp[i] :=arr[i-1] XOR arr[i+1] সম্পন্ন হয়েছে কপি টেম্প টু আরার পরবর্তী পুনরাবৃত্তির জন্য 1s সংখ্যা সক্রিয় হিসাবে গণনা করা হয়েছে, এবং 0s সংখ্যা হিসাবে নিষ্ক্রিয়, তারপর মান দিনউদাহরণ
#includeনেমস্পেস ব্যবহার করে std;void activeCellKdays(bool arr[], int n, int k) { bool temp[n]; //temp (int i=0; i আউটপুট
সক্রিয় কোষ =2, নিষ্ক্রিয় কোষ =6