Esempio n. 1
0
void FP_tree::powerset(int*prefix, int prefixlen, int* items, int current, int itlen, FSout* fout, int thread )const
{
	if(current==itlen)
	{
		if(prefixlen!=0)
		{	
				fout->printset(list[thread]->top, list[thread]->FS);
				fout->printSet(prefixlen, prefix, count[global_temp_order_array[thread][prefix[prefixlen-1]]]);
		}
	}else{
		current++;
		powerset(prefix, prefixlen, items, current, itlen, fout, thread);
		current--;
		prefix[prefixlen++]=items[current++];
		powerset(prefix, prefixlen, items, current, itlen, fout, thread);
	}
}	
Esempio n. 2
0
void powerset(char **v, int n, struct node *up)
{
	struct node me;

	if (!n) {
		putchar('[');
		while (up) {
			printf(" %s", up->s);
			up = up->prev;
		}
		puts(" ]");
	} else {
		me.s = *v;
		me.prev = up;
		powerset(v + 1, n - 1, up);
		powerset(v + 1, n - 1, &me);
	}
}
int main()
{
    std::set<int> s = {2, 3, 5, 7};
    auto pset = powerset(s);

    for (auto&& subset: pset) {
        std::cout << "{ ";
        char const* prefix = "";
        for (auto&& e: subset) {
            std::cout << prefix << e;
            prefix = ", ";
        }
        std::cout << " }\n";
    }
}
Esempio n. 4
0
File: main.cpp Progetto: CCJY/coliru
std::set<Set> powerset(const Set& s, size_t n)  {
    std::set<Set> result;
    if(n > 0) {
        std::set<Set> ps = powerset(s, n-1);
        for(auto&& ss : ps) {
            for(auto&& el : s) {
                Set subset(ss);
                subset.insert(el);
                result.insert(subset);
            }
        }
        result.insert(ps.begin(), ps.end());
    }
    else {
        result.insert(Set());
    }
    return result;
}
Esempio n. 5
0
int main()
{
  int values[4] = { 2, 3, 5, 7 };
  set_type test_set(values, values+4);

  powerset_type test_powerset = powerset(test_set);

  for (powerset_type::iterator iter = test_powerset.begin();
       iter != test_powerset.end();
       ++iter)
  {
    std::cout << "{ ";
    char const* prefix = "";
    for (set_type::iterator iter2 = iter->begin();
         iter2 != iter->end();
         ++iter2)
    {
      std::cout << prefix << *iter2;
      prefix = ", ";
    }
    std::cout << " }\n";
  }
}
Esempio n. 6
0
File: main.cpp Progetto: CCJY/coliru
int main() {
    // this could be modified
    std::set<std::string> letters = {
        "Schedule A", "Schedule C", "Schedule D",
        "Schedule E", "Schedule F"
    };

    // do not touch from here
    auto&& power = powerset(letters);

    for(auto&& set : power) {
        if(set.empty()) {
            continue;
        }
        
        std::cout << "\t- ";
        char comma[] = { '\0', ' ', '\0' };
        for(auto&& elem : set) {
            std::cout << comma << elem;
            comma[0] = ',';
        }
        std::cout << '\n';
    }
}
Esempio n. 7
0
int main(int argc, char **argv)
{
	powerset(argv + 1, argc - 1, 0);
	return 0;
}
Esempio n. 8
0
void FP_tree::generate_all(int new_item_no, int thread, FSout* fout)const
{ 
	powerset(prefix[thread], 0, list[thread]->FS, list[thread]->top, list[thread]->top+new_item_no, fout, thread); 
}
Esempio n. 9
0
File: main.cpp Progetto: CCJY/coliru
std::set<Set> powerset(const Set& s) {
    return powerset(s, s.size());
}