что я могу сделать, чтобы оптимизировать этот код, если язык будет c ++, мне будет легче понять.
Учитывая массив целых чисел и сумму, задача состоит в том, чтобы подсчитать все подмножества данный массив с суммой, равной данной сумме. Ввод: arr [] = {2, 3, 5, 6, 8, 10}, сумма = 10, подмножества -> {5 2 3}, {2 8}, {10}, выход: 3 Ввод: arr [ ] = {1, 2, 3, 4, 5}, сумма = 10, подмножества -> {4 3 2 1}, {5 3 2}, {5 4 1}, Выход: 3)
#include<bits/stdc++.h>
using namespace std;
string binary_string(int i,int len){
string res="";
int mod =0;
while(i>0){
mod = i%2;
res+=to_string(mod);
i/=2;
}
int n = res.length();
if(n!=len){
while(n!=len){
res.append("0");
n++;
}
return res;
}
return res;
}
int main()
{
int t;
cin>>t;
while(t--){
string binary;//,subseq;
int n,k,count=0,sum,val;
cin>>n;
vector<int>vect;
for(int i=0;i<n;i++){
cin>>k;
vect.push_back(k);
}
cin>>val;
int bits_range = (int)pow(2,n) - 1;
//cout<<"SUBSETS ARE :"<<endl;
for(int i=0;i<=bits_range;i++){
binary=binary_string(i,n);
sum=0;
for(int i=binary.length()-1;i>=0;i--){
if(binary[i]=='1'){
//subseq+=to_string(vect[i]);
sum+=vect[i];
}
}
if(sum==val){
count++;
//cout<<subseq<<endl;
//subseq="";
}
//subseq="";
}
cout<<count<<endl;
}
}