Example #1
0
int main(int argc, char* argv[])
{
	if (argc != 2)
	{
		std::cerr<<"Usage: ./gen_subsets <number>\n";
		return -1;
	}
	
	unsigned long number = boost::lexical_cast<unsigned long>(std::string(argv[1]));
	
	{
		clock_t ticks = clock();
		generateSubsets(number);
		std::cout << "Bits: "<< clock() - ticks << std::endl;
	}

	
	{
		clock_t ticks = clock();
		IntVector cset;
		generateBacktrack(cset, number+1);
		std::cout << "Back: "<< clock() - ticks << std::endl;
	}
	
	{
		clock_t ticks = clock();
		backtrackingIterative(number+1);
		std::cout << "Iter: "<< clock() - ticks << std::endl;
	}
	
	return 0;
}
Example #2
0
 void generateSubsets(vector<int> &S, int index, vector<int> &current, vector<vector<int> > &result) {
            if (index >= S.size()) {
                result.push_back(current);
                for(int i=0;i<current.size();i++){
                    //cout<<current[i]<<" ";
                }
                //cout<<endl;
                return;
            }
            // Ignore the current index.
            generateSubsets(S, index + 1, current, result);

            // Include the current index. 
            current.push_back(S[index]);
            generateSubsets(S, index + 1, current, result);
            current.pop_back();
        }
Example #3
0
	void generateSubsets(vector<int>& nums, int level, vector<int>& sol, vector<vector<int>>& result) {
		for (int i = level; i < nums.size(); i++) {
			sol.push_back(nums[i]);
			result.push_back(sol);
			generateSubsets(nums, i+1, sol, result);
			sol.pop_back();
		}
	
	}
Example #4
0
int main()
{
    int weights[] = {10, 7, 5, 18, 12, 20, 15};
    int size = ARRAYSIZE(weights);
 
    generateSubsets(weights, size, 35);
    printf("Nodes generated %d\n", total_nodes);
    return 0;
}
Example #5
0
vector<vector<int> > Solution::subsets(vector<int> &S) {

            vector<vector<int> > result; 
            vector<int> current;
            sort(S.begin(), S.end());
            generateSubsets(S, 0, current, result);
            sort(result.begin(), result.end());
            return result;
}
Example #6
0
int main()
{
    int weights[] = {100,-100,200,-200,50,-50};
    int size = ARRAYSIZE(weights);
 
    generateSubsets(weights, size, 35);
    printf("Nodes generated %d\n", total_nodes);
    return 0;
}
Example #7
0
	vector<vector<int>> subsets(vector<int>& nums) {
		//similar to combination, permutation
		vector<vector<int>> result;
		vector<int> sol;
		if (nums.size() == 0) return result;
		result.push_back(sol);
		sort(nums.begin(), nums.end());
		generateSubsets(nums, 0, sol, result);
		
		return result;
	}
Example #8
0
int main()
{
    int weights[100002],i,t,size;
scanf("%d",&t);
while(t--)
{
    k1=0;
    setsize=0;
    scanf("%d",&size);
    for(i=0;i<size;i++)
    {
    scanf("%d",&weights[i]);
    }
    generateSubsets(weights, size,size);
  //  printf("Nodes generated %d\n", total_nodes);
if(setsize==0)
printf("-1\n");
else
{
    printf("%d\n",setsize);
    int k;
    k=0;
for(i=0;i<size;i++)
{
    if(k==setsize)
    break;
if(weights[i]==setarr[k])
    {
        printf("%d ",i+1);
    k++;
    }
}
printf("\n");
}
}
    return 0;
 
}