Skip to content

Instantly share code, notes, and snippets.

@oshea00
Created August 16, 2019 00:02
Show Gist options
  • Save oshea00/710edafa177310ccb6a2745058b89a1c to your computer and use it in GitHub Desktop.
Save oshea00/710edafa177310ccb6a2745058b89a1c to your computer and use it in GitHub Desktop.
void Main()
{
Steps(0,5).Dump();
}
Dictionary<int,int> memo = new Dictionary<int,int>();
int Steps(int step, int numstairs)
{
if (numstairs == 0)
return 1;
if (numstairs < 0)
return 0;
if (memo.TryGetValue(numstairs, out int val))
return val;
var steps = Steps(1, numstairs - 1) +
Steps(2, numstairs - 2) +
Steps(3, numstairs - 3);
memo.Add(numstairs, steps);
//Console.WriteLine($"{numstairs}<={steps}");
return steps;
}
// Stairs(0,5) returns 13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment