Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- using namespace std;
- typedef vector<int> VI;
- typedef vector<string> VS;
- typedef vector<VI> MI;
- void escriuv(VI& v, VS& p, int subsets){
- bool first = true;
- for(int s = 0; s < subsets; ++s){
- first = true;
- cout << "subconjunt " << s+1 << ": {";
- for(int i = 0; i < v.size(); ++i){
- if(v[i] == s){
- if(first) {
- cout << p[i];
- first = false;
- }
- else cout << "," << p[i];
- }
- }
- cout << "}" << endl;
- }
- cout << endl;
- }
- void combinations(VI& variables, int num_words, int subsets, int word_act, VS& paraules){
- if(word_act >= num_words) {
- escriuv(variables, paraules, subsets);
- return;
- }
- for(int i = 0; i < subsets; ++i){
- variables[word_act] = i;
- combinations(variables, num_words, subsets, word_act+1, paraules);
- }
- }
- int main() {
- int words;
- cin >> words;
- VS paraules(words);
- for(int i = 0; i < words; ++i)
- cin >> paraules[i];
- int subsets;
- cin >> subsets;
- VI variables(words);
- combinations(variables, words, subsets, 0, paraules);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement