diff --git a/015/main.rs b/015/main.rs new file mode 100644 index 0000000..7511e67 --- /dev/null +++ b/015/main.rs @@ -0,0 +1,29 @@ +type LS = Vec>>; + +struct Lattice { ls: LS } + +impl Lattice { + pub fn new() -> Lattice { + let mut ls = LS::new(); + for _i in 0..21 { + let lr = vec![None; 21]; + ls.push(lr); + } + ls[0][0] = Some(1); + Lattice { ls: ls } + } + pub fn compute(&mut self, i: usize, j: usize) -> u64 { + if self.ls[i][j].is_some() { return self.ls[i][j].unwrap(); } + let mut res = 0u64; + if i > 0 { res += self.compute(i - 1, j); } + if j > 0 { res += self.compute(i, j - 1); } + self.ls[i][j] = Some(res); + res + } +} + +fn main() { + let mut lt = Lattice::new(); + let res = lt.compute(20, 20); + println!("{}", res); +}