কম্পিউটার

C++ এ পরপর 2 না করে 1 এবং 2 ব্যবহার করে স্কোরে পৌঁছানোর উপায় গণনা করুন


রানের স্কোর দিয়েছেন। লক্ষ্য হল সেই স্কোর এমনভাবে পৌঁছানো যাতে ব্যাটসম্যান একটি মাত্র বলে 1 বা 2 রান নিতে পারে। নিষেধাজ্ঞা হল পরপর ২ রান নেওয়া যাবে না। উদাহরণস্বরূপ, প্রদত্ত স্কোর 6-এ পৌঁছানোর জন্য, কেউ রান নিতে পারে যেমন:1+2+1+2 কিন্তু 2+2+1+1 নয় বা অন্য কোনো উপায়ে পরপর দুটি 2।

উদাহরণস্বরূপ

ইনপুট

score=4

আউটপুট

Count of ways to reach a score using 1 and 2 with no consecutive 2s are: 4

ব্যাখ্যা

The ways in which we can reach the score 4 in following ways:
1+1+1+1, 1+1+2, 1+2+1, 2+1+1

ইনপুট

score=5

আউটপুট

Count of ways to reach a score using 1 and 2 with no consecutive 2s are: 6

ব্যাখ্যা

The ways in which we can reach the score 6 in following ways:
1+1+1+1+1, 2+1+1+1, 1+2+1+1 , 1+1+2+1, 1+1+1+2, 2+1+2

নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি

এই পদ্ধতিতে আমরা একটি পতাকা ব্যবহার করে চিহ্নিত করব যে আগের স্কোরটি দুটি ছিল বা না, যদি এটি 2 হয় তাহলে আমরা পরবর্তী রানের সাথে 1 অন্য 2 হিসাবে স্কোর কভার করব।

  • একটি পূর্ণসংখ্যা পরিবর্তনশীল স্কোর নিন।

  • পতাকা পরিবর্তনশীল চেক নিন =প্রাথমিকভাবে মিথ্যা।

  • ফাংশন ways_reach_score(int স্কোর, বুল চেক) 1 এবং 2 ব্যবহার করে একটি স্কোর পৌঁছানোর উপায়গুলির গণনা বলে কোনো ধারাবাহিক 2s ছাড়াই৷

  • 0 হিসাবে প্রাথমিক গণনা নিন।

  • স্কোর 0 হলে 0 ফেরত দিন।

  • যদি চেকটি মিথ্যা হয় তার মানে পূর্ববর্তী রান ছিল 1, তাই বর্তমান স্কোর বেশি হলে উপায় গণনা করা হবে =ways_reach_score(score − 1, false) +ways_reach_score(score − 2, true)।

  • অন্যথায় পূর্ববর্তী রান ছিল 2, তাই ফলস্বরূপ রান শুধুমাত্র 1 হবে তাই উপায় হবে ways_reach_score(স্কোর −1, মিথ্যা)।

  • শেষে আমরা গণনায় মোট উপায় পাব।

  • ফলাফল হিসাবে রিটার্ন গণনা।

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
int ways_reach_score(int score, bool check){
   int count = 0;
   if (score == 0){
      return 1;
   }
   if (check == false && score > 1){
      count += ways_reach_score(score − 1, false) + ways_reach_score(score − 2, true);
   } else {
      count += ways_reach_score(score − 1, false);
   }
   return count;
}
int main(){
   int score = 4;
   bool check = false;
   cout<<"Count of ways to reach a score using 1 and 2 with no consecutive 2s are: "<<ways_reach_score(score, check);
   return 0;
}

আউটপুট

যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −

উৎপন্ন করবে
Count of ways to reach a score using 1 and 2 with no consecutive 2s are: 4

  1. C++ এ Bitwise এবং ODD সংখ্যা হিসাবে জোড়া গণনা করুন

  2. C++ এ সর্বাধিক পার্থক্য সহ একটি জুটি বেছে নেওয়ার উপায়গুলি গণনা করুন

  3. C++ এ STL ব্যবহার করে অ্যারে এবং ভেক্টরের সাথে কাজ করা

  4. C++ এ STL ব্যবহার করে একটি বাইনারি অ্যারেতে 1 এবং 0 এর সংখ্যা গণনা করুন