ধরুন আমাদের একটি নম্বর আছে। একজন কেক বিক্রেতা 40 টাকা দিয়ে কেক এবং 70 টাকা দিয়ে ডোনাট বিক্রি করছেন। আমাদের যাচাই করতে হবে যে আমরা ঠিক N টাকা দিয়ে কিছু কিনতে পারি কি না।
সুতরাং, যদি ইনপুটটি N =110 এর মত হয়, তাহলে আউটপুট হবে True, কারণ 40 + 70 =110।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
o := false Define a function dfs(), this will take i, if i > n, then: return false if i is same as n, then: return true if dfs(i + 40), then: return true return dfs(i + 70) From the main method, do the following n := N o := dfs(0) return o
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
#include <bits/stdc++.h>
using namespace std;
int n;
bool o = false;
bool dfs(int i) {
if (i > n)
return false;
if (i == n)
return true;
if (dfs(i + 40))
return true;
return dfs(i + 70);
}
bool solve(int N) {
n = N;
o = dfs(0);
return o;
}
int main(){
int N = 110;
cout << solve(N) << endl;
} ইনপুট
110
আউটপুট
1