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; }
void generateSubsets(vector<int> &S, int index, vector<int> ¤t, 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(); }
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(); } }
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; }
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; }
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; }
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; }
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; }