diff --git a/solution/0900-0999/0935.Knight Dialer/README.md b/solution/0900-0999/0935.Knight Dialer/README.md index 2ff51c8a3288e..80585feab7454 100644 --- a/solution/0900-0999/0935.Knight Dialer/README.md +++ b/solution/0900-0999/0935.Knight Dialer/README.md @@ -195,6 +195,35 @@ func knightDialer(n int) int { } ``` +### **C#** + +```cs +public class Solution { + public int KnightDialer(int n) { + if (n == 1) return 10; + int A = 4; + int B = 2; + int C = 2; + int D = 1; + int MOD = (int)1e9 + 7; + for (int i = 0; i < n - 1; i++) { + int tempA = A; + int tempB = B; + int tempC = C; + int tempD = D; + A = ((2 * tempB) % MOD + (2 * tempC) % MOD) % MOD; + B = tempA; + C = (tempA + (2 * tempD) % MOD) % MOD; + D = tempC; + } + + int ans = (A + B) % MOD; + ans = (ans + C) % MOD; + return (ans + D) % MOD; + } +} +``` + ### **...** ``` diff --git a/solution/0900-0999/0935.Knight Dialer/README_EN.md b/solution/0900-0999/0935.Knight Dialer/README_EN.md index d135772fa89c8..a7c94eaabe008 100644 --- a/solution/0900-0999/0935.Knight Dialer/README_EN.md +++ b/solution/0900-0999/0935.Knight Dialer/README_EN.md @@ -176,6 +176,35 @@ func knightDialer(n int) int { } ``` +### **C#** + +```cs +public class Solution { + public int KnightDialer(int n) { + if (n == 1) return 10; + int A = 4; + int B = 2; + int C = 2; + int D = 1; + int MOD = (int)1e9 + 7; + for (int i = 0; i < n - 1; i++) { + int tempA = A; + int tempB = B; + int tempC = C; + int tempD = D; + A = ((2 * tempB) % MOD + (2 * tempC) % MOD) % MOD; + B = tempA; + C = (tempA + (2 * tempD) % MOD) % MOD; + D = tempC; + } + + int ans = (A + B) % MOD; + ans = (ans + C) % MOD; + return (ans + D) % MOD; + } +} +``` + ### **...** ``` diff --git a/solution/0900-0999/0935.Knight Dialer/Solution.cs b/solution/0900-0999/0935.Knight Dialer/Solution.cs new file mode 100644 index 0000000000000..729a2f2ae4442 --- /dev/null +++ b/solution/0900-0999/0935.Knight Dialer/Solution.cs @@ -0,0 +1,24 @@ +public class Solution { + public int KnightDialer(int n) { + if (n == 1) return 10; + int A = 4; + int B = 2; + int C = 2; + int D = 1; + int MOD = (int)1e9 + 7; + for (int i = 0; i < n - 1; i++) { + int tempA = A; + int tempB = B; + int tempC = C; + int tempD = D; + A = ((2 * tempB) % MOD + (2 * tempC) % MOD) % MOD; + B = tempA; + C = (tempA + (2 * tempD) % MOD) % MOD; + D = tempC; + } + + int ans = (A + B) % MOD; + ans = (ans + C) % MOD; + return (ans + D) % MOD; + } +}