কম্পিউটার

C++ এ N দিন পর জেলখানা


ধরুন 8টি কারাগার পরপর রয়েছে এবং প্রতিটি কক্ষে একজন বন্দী আছে বা সেটি খালি। প্রতিটি দিনে, সেলটি দখল করা বা খালি আছে কিনা তা নিম্নলিখিত নিয়ম অনুসারে পরিবর্তিত হয় -

  • যদি একটি কক্ষের দুটি সংলগ্ন প্রতিবেশী থাকে যা উভয়ই দখলে থাকে বা উভয়ই খালি থাকে, তাহলে কোষটি দখল হয়ে যায়৷

  • অন্যথায়, এটি খালি হয়ে যায়।

আমরা নিম্নোক্তভাবে কারাগারের বর্তমান অবস্থা বর্ণনা করব:i-th কোষটি দখল করা হলে কোষ [i] হবে 1, অন্যথায় কোষ [i] হবে 0৷

তাই আমাদের কারাগারের প্রাথমিক অবস্থা আছে, তারপর N দিন পরে কারাগারের অবস্থা ফিরে আসবে।

সুতরাং ইনপুট যদি হয়:[0,1,0,1,1,0,0,1], এবং N =7, তাহলে আউটপুট হবে [0,0,1,1,0,0,0, 0]। তাই এই কারণ নিম্নলিখিত. সাত দিনের জন্য -

<পূর্ব>দিন 0:[0, 1, 0, 1, 1, 0, 0, 1]দিন 1:[0, 1, 1, 0, 0, 0, 0, 0]দিন 2:[0, 0 , 0, 0, 1, 1, 1, 0]দিন 3:[0, 1, 1, 0, 0, 1, 0, 0]দিন 4:[0, 0, 0, 0, 0, 1, 0 , 0]দিন 5:[0, 1, 1, 1, 0, 1, 0, 0]দিন 6:[0, 0, 1, 0, 1, 1, 0, 0]দিন 7:[0, 0 , 1, 1, 0, 0, 0, 0>

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • একটি মানচিত্র m তৈরি করুন এবং একটি সেট তৈরি করুন যাকে বলা হয় পরিদর্শন করা৷

  • যদি N 0 হয়, তাহলে কোষ ফেরত দিন

  • পরিদর্শন করা সেটে কক্ষ সন্নিবেশ করান

  • আমি 1 থেকে 14 রেঞ্জের মধ্যে

    • টেম্প অফ সাইজ 8

      নামে একটি অ্যারে তৈরি করুন
    • 1 থেকে 6 পরিসরে j এর জন্য

      • যদি কোষ [j – 1] XOR কোষ [j + 1] =0, তাহলে temp[j] :=1

    • কোষ :=তাপমাত্রা

    • m[i] :=temp

    • পরিদর্শন

      -এ তাপমাত্রা সন্নিবেশ করান
  • যদি N 14 দ্বারা বিভাজ্য হয়, তাহলে m[14] ফেরত দিন, অন্যথায় m[N mod 14]

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

#include  namespace ব্যবহার করে std;void print_vector(vector v){ cout <<"["; for(int i =0; i জেলআফটারNDays(ভেক্টর এবং কোষ, int N) { মানচিত্র > m; if(N ==0) কোষ ফেরত দেয়; সেট <ভেক্টর > পরিদর্শন করা হয়েছে; visited.insert(cells); জন্য (int i =1; i<=14; i++ ){ ভেক্টর  টেম্প(8); (int j =1; j <7; j++){ if(cells[j - 1] ^ কোষ[j + 1] ==0){ temp[j] =1; } } কোষ =তাপমাত্রা; m[i] =temp; visited.insert(temp); } ফেরত m[N % 14 ==0? 14 :N % 14]; }};প্রধান(){ ভেক্টর v1 ={0,1,0,1,1,0,0,1}; সমাধান ob; print_vector(ob.prisonAfterNDays(v1, 7));}

ইনপুট

[0,1,0,1,1,0,0,1]7

আউটপুট

[0,0,1,1,0,0,0,0]

  1. C++ এ N কেটে যাওয়ার পর বৃত্তের টুকরোগুলো গণনা করুন

  2. C++ এ সর্বোচ্চ ছুটির দিন

  3. C++ এ T সেকেন্ডের পর ব্যাঙের অবস্থান

  4. পাইথনে k দিন পর জেলখানার অবস্থা খুঁজে বের করার প্রোগ্রাম