const DEST:(usize, usize) = (7,9);
fn try_way(pre:(usize, usize),
curr:(usize, usize),
map:&[[i32;10];10],
route:&mut Vec<(usize, usize)>){
let up:(usize, usize) = (curr.0-1,curr.1);
let down:(usize, usize) = (curr.0+1,curr.1);
let left:(usize, usize) = (curr.0,curr.1-1);
let right:(usize, usize) = (curr.0,curr.1+1);
for i in vec![up, down, left, right]{
if i!=pre{
if map[i.0][i.1]==0{
route.push(i);
if i == DEST{
println!("finished: {:?}", &route);
}
let mut route = route.clone();
try_way(curr, i, &map, &mut route);
}
}
}
}
fn main(){
let map = [[ 1, 1, 0, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 0, 1, 0, 0, 0, 0, 0, 1],
[1, 0, 0, 1, 0, 1, 1, 0, 1, 1],
[1, 1, 0, 0, 0, 1, 0, 0, 0, 1],
[1, 1, 1, 1, 1, 1, 1, 0, 1, 1],
[1, 0, 0, 0, 1, 0, 0, 0, 0, 1],
[1, 0, 1, 0, 0, 0, 1, 1, 1, 1],
[1, 0, 1, 1, 1, 1, 1, 1, 0, 0],
[1, 0, 0, 0, 0, 0, 0, 0, 0, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]];
let mut route:Vec<(usize, usize)> = vec![(0,2)];
try_way((0,2), (1,2), &map, &mut route)
}