Untitled
unknown
plain_text
7 months ago
910 B
4
Indexable
#include<bits/stdc++.h>
using namespace std;
int arr[8];
int seen[8];
int n;
int came = 0;
int size = 0;
vector <int> maxx;
void b_fasele(int ind){
bool c = 0;
bool m = 0;
if(ind!=0 && maxx[size]<arr[ind-1]){
maxx.push_back(arr[ind-1]);
size++;
m = 1;
}
if(maxx[size]-came > n-ind){
if(m){
maxx.pop_back();
size--;
m = 0;
}
return;
}
if(ind == n){
for(int i = 0; i<n; i++){
cout << arr[i] << " ";
}
cout << endl;
if(m){
maxx.pop_back();
size--;
m = 0;
}
return;
}
for(int i = 1; i<=n; i++){
arr[ind] = i;
if(seen[i-1] == 0){
came++;
c = 1;
}
seen[i-1]++;
b_fasele(ind+1);
if(c){
came--;
c = 0;
}
arr[ind] = 0;
seen[i-1]--;
}
if(m){
maxx.pop_back();
size--;
m = 0;
}
}
int main(){
cin >> n;
maxx.push_back(1);
b_fasele(0);
}Editor is loading...
Leave a Comment