迷宫
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) }