Untitled

 avatar
unknown
plain_text
a month ago
910 B
2
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