Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cmath>
- #include <cstdio>
- #include <vector>
- #include <iostream>
- #include <algorithm>
- using namespace std;
- vector<vector<int>> final;
- void printSolution()
- {
- cout << final.size() + 1 << endl;
- for(int i = 0; i < final.size(); i++)
- {
- for(int j = 0; j < final[i].size(); j++)
- {
- if(final[i][j] != 0)
- {
- cout<< final[i][j] << " ";
- }
- }
- cout << endl;
- }
- }
- bool isGood(vector<int> vec, int x)
- {
- for(int j = 0; j < x; j++)
- {
- if(vec[j] == vec[x] || vec[j] > vec[x])
- {
- return false;
- }
- }
- return true;
- }
- void bkt(vector<int> vec, int n, int x)
- {
- for (int i = 1; i <= n; i++)
- {
- vec[x] = i;
- if (isGood(vec, x))
- {
- if(x <= vec.size() - 1)
- {
- final.push_back(vec);
- bkt(vec, n, x + 1);
- }else
- {
- if(x > vec.size())
- {
- return;
- }
- bkt(vec, n, x + 1);
- }
- }
- }
- }
- void solve(int n)
- {
- vector<int> vec;
- for(int i = 0; i < n; i++)
- {
- vec.push_back(0);
- }
- bkt(vec, n, 0);
- }
- int main()
- {
- int n;
- cin >> n;
- if(n >= 1)
- {
- solve(n);
- printSolution();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement