Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- int n , mat[101][101],cnt;
- // mat[i][0] - dimensiunea submultimii.
- void gen(int nr, int cateSubmultimi)
- {
- if(nr == n + 1)
- {
- cnt++;
- cout <<"\t";
- for(int i = 1;i<=cateSubmultimi;i++)
- {
- cout << "{ ";
- for(int j = 1;mat[i][j]!=0;j++)
- cout << mat[i][j] << ' ';
- cout << "}";
- cout << " ";
- }
- cout << '\n';
- return;
- }
- /// Adaugam elementul la una dintre submultimile existente.
- for(int i = 1;i<= cateSubmultimi;i++)
- {
- mat[i][0]++;
- mat[i][mat[i][0]] = nr;
- gen(nr+1,cateSubmultimi);
- mat[i][mat[i][0]] = 0;
- mat[i][0]--;
- }
- /// Adaugam elementul intr-o noua submultime
- if(mat[cateSubmultimi][0]!=0)
- {
- cateSubmultimi++;
- mat[cateSubmultimi][0] = 1;
- mat[cateSubmultimi][1] = nr;
- gen(nr + 1, cateSubmultimi);
- mat[cateSubmultimi][1] = 0;
- mat[cateSubmultimi][0] = 0;
- cateSubmultimi--;
- }
- }
- int main() {
- cout<<"\n\n\tPartiile multimii {1,2,3.....,n}\n" << "\n\tDati valoarea lui n: ";
- cin >> n;
- cout << '\n';
- gen(1,1);
- cout <<"\n\tNumar solutii: " << cnt << '\n';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement