From 390f3a0b7f5dca565d0eccc860a11b033cd80921 Mon Sep 17 00:00:00 2001 From: Horiol Date: Wed, 23 Oct 2019 22:58:33 +0200 Subject: [PATCH] #755 Catalan numbers in Rust --- .../DynamicProgramming/catalan_horiol.rs | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 Algorithms/DynamicProgramming/catalan_horiol.rs diff --git a/Algorithms/DynamicProgramming/catalan_horiol.rs b/Algorithms/DynamicProgramming/catalan_horiol.rs new file mode 100644 index 000000000..2c09c5987 --- /dev/null +++ b/Algorithms/DynamicProgramming/catalan_horiol.rs @@ -0,0 +1,28 @@ +use std::io; + +fn main() { + println!("Enter number value: "); + let mut input = String::new(); + io::stdin().read_line(&mut input).ok().expect("failed to read line"); + let val: u64 = input.trim().parse().expect("Please type a number"); + println!("Catalan number is: {}", catalan(val)); +} + +fn catalan(n: u64) -> u64 { + if n == 0 || n == 1 { + return 1; + } + + let mut catalan_list = Vec::new(); + catalan_list.push(1); + catalan_list.push(1); + + for index in 2..(n+1) { + catalan_list.push(0); + for other_index in 0..index { + catalan_list[index as usize] = catalan_list[index as usize] + + catalan_list[other_index as usize] * catalan_list[(index - other_index - 1) as usize]; + } + } + return catalan_list[n as usize]; +} \ No newline at end of file