I am a novice programmer and very weak in complexity calculation. I have learnt to write a program for creating all possible subsets from a set of elements, i.e. knapsack algorithm. Now I would like to know how to calculate the complexity of the algorithm. Can anyone help me with better clarification. Here is my code:
#include<iostream>
#include<cstdio>
#include<map>
#include<vector>
using namespace std;
int N,M,a[15];
map<int,vector<int> >multiple;
void creating_subset(int i,int m,int l)
{
if(i>=M)
{
multiple[l].push_back(m);
return;
}
creating_subset(i+1,m*a[i],l+1);
creating_subset(i+1,m,l);
}
int main()
{
cin>>M;
for(int i=0;i<M;i++)
cin>>a[i];
creating_subset(0,1,0);
for(int i=0;i<multiple[3].size();i++)
printf("%d ",multiple[3][i]);
cout<<endl;
return 0;
}