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

C++ কোড: বাঙের ন্যূনতম জাম্প দিয়ে বাড়ি ফেরার পথ


মান লক্ষ্য করুন একটি n বিটের বাইনারি স্ট্রিং S এবং আরেকটি সংখ্যা d। একটি নাম্বার লাইনে, একটি বাঙ পয়েন্ট n-এ পৌঁছাতে চায়, পয়েন্ট ১ থেকে শুরু করে। বাঙ ডানে পার্শ্বে d দূরত্ব পর্যন্ত জাম্প দিতে পারে। ১ থেকে n প্রতিটি পয়েন্টে যদি লিলি ফুল থাকে তবে ১, না থাকলে ০ দিয়ে মার্ক করা আছে। বাঙ শুধু লিলি ফুল থাকা পয়েন্টে জাম্প দিতে পারে। আমাদের বাঙ যে ন্যূনতম জাম্প দিয়ে n-এ পৌঁছাবে তা বের করতে হবে। যদি সম্ভব না হয়, তবে -1 রিটার্ন করুন।

তাই, যদি ইনপুট হয় S = "10010101"; d = 4, তবে আউটপুট হবে ২, কারণ পজিশন ১ থেকে ৪-এ জাম্প, তারপর ইনডেক্স ৮ (n)।

ধাপসমূহ

এটি সমাধান করার জন্য, আমরা এই ধাপগুলো অনুসরণ করব −

n := size of s
x := 0
y := 0
while (x < n - 1 and y <= n), do:
    if s[x] is same as '1', then:
        x := x + d
        increase y by 1
    Otherwise
        (decrease x by 1)
if y >= n, then:
    return -1
Otherwise
    return y

উদাহরণ

বेहतर বোঝার জন্য ইমপ্লিমেন্টেশন দেখি −

#include <bits/stdc++.h>
using namespace std;
int solve(string s, int d){
    int n = s.size();
    int x = 0, y = 0;
    while (x < n - 1 && y <= n){
        if (s[x] == '1')
            x += d, ++y;
        else
            --x;
    }
    if (y >= n)
        return -1;
    else
        return y;
}
int main(){
    string S = "10010101";
    int d = 4;
    cout << solve(S, d) << endl;
}

ইনপুট

"10010101", 4

আউটপুট

2

  1. সর্বনিম্ন x খুঁজে বের করা যাতে (x % k) * (x / k) == n C++-তে

  2. ম্যাট্রিক্সের শেষ কোষ্ঠক পর্যন্ত যেতে ন্যূনতম ধাপ বের করা C++-তে

  3. অনন্ত নাম্বার লাইনে লক্ষ্যে যেতে ন্যূনতম মুভের সংখ্যা বের করা C++-তে

  4. পাইথনে বাধা ও উল্টা জাম্প নিয়ম মেনে বাসায় পৌঁছাতে ন্যূনতম জাম্প বের করার প্রোগ্রাম