Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Zadatak: Permutacija N elemenata rekurzivno
- Datum: 2012-12-01
- Autor: Kristijan Burnik, udruga informatičara Božo Težak
- Gmail: kristijanburnik
- */
- #include <iostream>
- #include <cstdlib>
- #include <vector>
- using namespace std;
- void ispisi(vector <int> &v) {
- int n = v.size();
- for (int i = 0; i < n; i ++){
- cout << v[i] << " ";
- }
- cout << endl;
- }
- void permutiraj ( vector<int> & v, int pocetak, int kraj ) {
- // izracunaj broj elemenata koje treba zamijeniti
- int n = kraj - pocetak+1;
- // ako nema zamjene (sve zamjene su obavljene)
- // samo ispisi sve brojeve
- if (n == 1) {
- ispisi(v);
- return;
- }
- // permutiraj bez pocetne zamjene
- permutiraj(v,pocetak+1,kraj);
- // zamijeni i permutiraj
- for (int i = 0; i < n; i++) {
- swap(v[pocetak],v[pocetak+i]); // (trenutni sa i. susjedom)
- permutiraj(v,pocetak+1,kraj);
- }
- // vrati natrag poredak
- for (int i = n-1; i >= 1; i--) {
- swap(v[pocetak],v[pocetak+i]);
- }
- }
- int main(void) {
- int n;
- cin >> n;
- vector<int> v;
- v.resize(n);
- for (int i = 0; i < n ; i++) {
- cin >> v[i];
- }
- permutiraj(v,0,n-1);
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement