Pagini recente » Cod sursa (job #2468811) | Cod sursa (job #2680406) | Cod sursa (job #2679453) | Cod sursa (job #1422325) | Cod sursa (job #3350578)
use std::fs::File;
use std::io::{BufRead, BufReader, BufWriter, Write};
use std::thread;
fn bkt(
pos: usize,
n: usize,
sol: &mut Vec<usize>,
visited: &mut Vec<bool>,
writer: &mut BufWriter<File>,
) {
if pos > n {
for i in 1..=n {
write!(writer, "{} ", sol[i]).unwrap();
}
writeln!(writer).unwrap();
return;
}
for val in 1..=n {
if visited[val] {
continue;
}
sol[pos] = val;
visited[val] = true;
bkt(pos + 1, n, sol, visited, writer);
visited[val] = false;
}
}
fn solve() {
let fin = File::open("permutari.in").unwrap();
let mut fout = BufWriter::new(File::create("permutari.out").unwrap());
let mut reader = BufReader::new(fin);
let mut line = String::new();
reader.read_line(&mut line).unwrap();
let n: usize = line.trim().parse().unwrap();
let mut sol = vec![0; n + 1];
let mut visited = vec![false; n + 1];
bkt(1, n, &mut sol, &mut visited, &mut fout);
}
fn main() {
// thread cu stack mare (stil de concurs)
let handle = thread::Builder::new()
.stack_size(100 * 1024 * 1024) // 100 MB
.spawn(|| {
solve();
})
.unwrap();
handle.join().unwrap();
}