My issue
why my dp solution is giving wrong answer?
My code
#include <bits/stdc++.h>
using namespace std;
int maxi;
bool isofform2x_1(int num) {
if (num <= 0) return false;
return (num & (num + 1)) == 0;
}
void solve(vector<int> &v, int ind, int ans, int taken) {
if (ind >= v.size()) {
if (isofform2x_1(ans)) {
maxi = max(taken, maxi);
}
return;
}
if (isofform2x_1(ans)) {
maxi = max(taken, maxi);
}
// take
int x = ans | v[ind];
solve(v, ind + 1, x, taken + 1);
// not take
solve(v, ind + 1, ans, taken);
}
int main() {
// your code goes here
int t;
cin >> t;
while (t--) {
int n;
cin >> n;
vector<int> v(n);
for (int i = 0; i < n; i++) {
cin >> v[i];
}
maxi = 0;
solve(v, 0, 0, 0);
cout << n-maxi << endl;
}
return 0;
}
Problem Link: Array Removal Practice Coding Problem