কম্পিউটার টিউটোরিয়াল

C++-এ ১ এবং ২ দিয়ে স্কোর পৌঁছানোর পদ্ধতি যেখানে ২ দুবার কনসিকিউটিভ নয়


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

উদাহরণ ১

ইনপুট

score=4

আউটপুট

১ এবং ২ দিয়ে কনসিকিউটিভ ২ ছাড়া স্কোর পৌঁছানোর পদ্ধতির সংখ্যা: 4

ব্যাখ্যা

স্কোর ৪ পাওয়ার পদ্ধতিগুলো: ১+১+১+১, ১+১+২, ১+২+১, ২+১+১

উদাহরণ ২

ইনপুট

score=5

আউটপুট

১ এবং ২ দিয়ে কনসিকিউটিভ ২ ছাড়া স্কোর পৌঁছানোর পদ্ধতির সংখ্যা: 6

ব্যাখ্যা

স্কোর ৫ পাওয়ার পদ্ধতিগুলো: ১+১+১+১+১, ২+১+১+১, ১+২+১+১, ১+১+২+১, ১+১+১+২, ২+১+২

প্রয়োগ করা পদ্ধতি

এই পদ্ধতিতে একটি ফ্ল্যাগ ব্যবহার করা হয় যাতে চেক করা যায় আগের রান ২ ছিল কিনা। যদি আগের রান ২ হয়, তবে পরবর্তী রান ১ হবে, অন্যথায় ২ হতে পারে।

  • ইন্টিজার ভেরিয়েবল score নিন।

  • ফ্ল্যাগ ভেরিয়েবল check = false আরম্ভিকভাবে।

  • ways_reach_score(int score, bool check) ফাংশনটি পদ্ধতির সংখ্যা বতায়।

  • আরম্ভিক কাউন্ট ০ রাখুন।

  • যদি score == 0 হয় তবে ১ রিটার্ন করুন (বেস কেস)।

  • যদি check == false হয় (অর্থাৎ আগের রান ১ ছিল) এবং বর্তমান স্কোর ১-র চেয়ে বড় হয়, তবে পদ্ধতি = ways_reach_score(score-1, false) + ways_reach_score(score-2, true)।

  • অন্যথায় (আগের রান ২ ছিল), পরবর্তী রান শুধু ১ হবে, তাই পদ্ধতি = ways_reach_score(score-1, false)।

  • শেষে মোট পদ্ধতি count-এ থাকবে।

  • count রিটার্ন করুন ফলাফল হিসেবে।

উদাহরণ কোড

#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 << "১ এবং ২ দিয়ে কনসিকিউটিভ ২ ছাড়া স্কোর পৌঁছানোর পদ্ধতির সংখ্যা: " << ways_reach_score(score, check); 
    return 0; 
}

আউটপুট

উপরোক্ত কোডটি রান করলে নিচের আউটপুটটি আসবে:

১ এবং ২ দিয়ে কনসিকিউটিভ ২ ছাড়া স্কোর পৌঁছানোর পদ্ধতির সংখ্যা: 4

  1. C++-এ বিটওয়াইজ AND অড পেয়ার: বিজোড় ফলাফল वाले যোড়া গণনা

  2. সি++-এ সর্বোচ্চ পার্থক্য বালা পেয়ার বেছে নেওয়ার উপায় গণনা

  3. সি++ STL-এ অ্যারে এবং ভেক্টর নিয়ে কাজ

  4. C++ STL-এ বাইনারি অ্যারেতে ১ এবং ০ গণনা