n বিট বাইনারি সংখ্যা জেনারেট করতে হবে যেন বাম এবং ডান অর্ধেকের ১-দের যোগফল সমান হয়।
অ্যালগরিদম
genAllBinEqualSumHalf(n, left, right, diff)
Begin if n==0: if diff==0 print left+right return if n==1: if diff==0 print left+0+right, left+1+right return if 2*|diff| <= n then if left not empty: gen(n-2, left+0, right+0, diff) gen(n-2, left+0, right+1, diff-1) gen(n-2, left+1, right+0, diff+1) gen(n-2, left+1, right+1, diff) end if End
উদাহরণ
#include <bits/stdc++.h> using namespace std; void genAllBinEqualSumHalf(int n, string left="", string right="", int di=0) { ... } main() { int n = 5; genAllBinEqualSumHalf(n); }আউটপুট
100001 100010 101011 110011 100100 101101 101110 110101 110110 111111