Pagini recente » Cod sursa (job #3356860) | Cod sursa (job #3349419) | Cod sursa (job #3348229) | Cod sursa (job #3036895) | Cod sursa (job #3355247)
//import java.io.BufferedReader;
//import java.io.IOException;
//import java.io.InputStreamReader;
//import java.util.*;
//
//public class Permutari {
// static int[] sol;
// static boolean[] vizitat;
// static int n ;
// public static void main(String args[] ) throws Exception {
// /* Enter your code here. Read input from STDIN. Print output to STDOUT */
// MyScanner s = new MyScanner();
// n = s.nextInt();
//
// sol = new int[n+1];
// vizitat = new boolean[n+1];
// if (n ==1 ) {
// System.out.println(1);
// } else {
// if (n == 0) {
// System.out.println(-1);
// } else {
// back(1);
// }
//
// }
//
//
// }
// static void back(int pas) {
// if (pas > n) {
// for (int j = 1; j <= n; j++) {
// System.out.print(sol[j] + " ");
// }
// System.out.println();
// return;
// }
//
// for (int i = 1; i<=n; i++) {
// if (!vizitat[i]) {
// if (pas == 1 || sol[pas - 1] != i) {
// vizitat[i] = true;
// sol[pas] = i;
// back(pas + 1);
// vizitat[i] = false;
// }
// }
//
// }
// }
//}
//
//class MyScanner {
// BufferedReader br;
// StringTokenizer st;
//
// public MyScanner() {
// br = new BufferedReader(new InputStreamReader(System.in));
// }
//
// String next() {
// while (st == null || !st.hasMoreElements()) {
// try {
// st = new StringTokenizer(br.readLine());
// } catch (IOException e) {
// e.printStackTrace();
// }
// }
// return st.nextToken();
// }
//
// int nextInt() {
// return Integer.parseInt(next());
// }
//
// long nextLong() {
// return Long.parseLong(next());
// }
//
// double nextDouble() {
// return Double.parseDouble(next());
// }
//
// String nextLine(){
// String str = "";
// try {
// str = br.readLine();
// } catch (IOException e) {
// e.printStackTrace();
// }
// return str;
// }
//}
import java.io.*;
import java.util.*;
public class Main {
static int[] sol;
static boolean[] vizitat;
static int n;
// Declarăm PrintWriter global pentru a-l putea accesa din funcția back
static PrintWriter out;
public static void main(String args[]) throws Exception {
// Inițializăm citirea din și scrierea în fișiere
MyScanner s = new MyScanner("permutari.in");
out = new PrintWriter(new BufferedWriter(new FileWriter("permutari.out")));
n = s.nextInt();
sol = new int[n + 1];
vizitat = new boolean[n + 1];
// Pornim backtracking-ul
back(1);
// FOARTE IMPORTANT: Trebuie să închidem fișierul la final pentru a salva datele scrise!
out.close();
}
static void back(int pas) {
// Condiția de oprire: am completat N numere
if (pas > n) {
for (int j = 1; j <= n; j++) {
out.print(sol[j] + " "); // Scriem în fișier în loc de consolă
}
out.println();
return;
}
// Generăm permutările
for (int i = 1; i <= n; i++) {
if (!vizitat[i]) { // Singura condiție necesară pentru permutări simple
vizitat[i] = true;
sol[pas] = i;
back(pas + 1);
vizitat[i] = false;
}
}
}
}
// Clasa MyScanner adaptată pentru a citi din fișier în loc de System.in
class MyScanner {
BufferedReader br;
StringTokenizer st;
public MyScanner(String fileName) throws FileNotFoundException {
br = new BufferedReader(new FileReader(fileName));
}
String next() {
while (st == null || !st.hasMoreElements()) {
try {
String line = br.readLine();
if (line == null) return null;
st = new StringTokenizer(line);
} catch (IOException e) {
e.printStackTrace();
}
}
return st.nextToken();
}
int nextInt() {
return Integer.parseInt(next());
}
long nextLong() {
return Long.parseLong(next());
}
double nextDouble() {
return Double.parseDouble(next());
}
String nextLine() {
String str = "";
try {
str = br.readLine();
} catch (IOException e) {
e.printStackTrace();
}
return str;
}
}