3
static const int mod = 1e9 + 7;4
vector<vector<int>> MOVES = {5
{4, 6}, {8, 6}, {7, 9}, {4, 8}, {3, 9, 0}, {}, {0, 1, 7}, {2, 6}, {1, 3}, {2, 4},10
int knightDialer(int n) {11
vector<int> nextNumbers = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};12
return knightDialer(n, nextNumbers);15
int knightDialer(int remaining, vector<int> &nextNumbers) {16
if (remaining == 1) return nextNumbers.size();19
for (int nextNumber : nextNumbers) {20
int cur = cache[remaining][nextNumber];22
cur = knightDialer(remaining - 1, MOVES[nextNumber]);23
cache[remaining][nextNumber] = cur;