C語言重構 935 騎士撥號器

2021-10-22 02:23:55 字數 925 閱讀 2700

所有題目源**:git位址

題目

西洋棋中的騎士可以按下圖所示進行移動:

這一次,我們將 「騎士」 放在**撥號盤的任意數字鍵(如上圖所示)上,接下來,騎士將會跳 n-

1 步。每一步必須是從乙個數字鍵跳到另乙個數字鍵。

每當它落在乙個鍵上(包括騎士的初始位置),都會呼出鍵所對應的數字,總共按下 n 位數字。

你能用這種方式呼出多少個不同的號碼?

因為答案可能很大,所以輸出答案模 10^9

+7。示例 1:

輸入:1

輸出:10

示例 2:

輸入:2

輸出:20

示例 3:

輸入:3

輸出:46 1

<= n <=

5000

方案:
class

solution

//1=6、8

//2=7、9

//3=4、8

//4=3、9、0

//5=不可能跳到,不用考慮

//6=1、7、0

//7=2、6

//8=1、3

//9=2、4

//0=4、6

for(

int i =

1; i < n; i++

)for

(int i =

0; i <

10; i++

)return sum;}}

;

複雜度計算

935 騎士撥號器 c 解題方法二

思路 將0 9分為四個部分 include include include using namespace std 騎士跳 日 long m 1e9 7 intknightdialer int n vector long dp1 4 有四個數 dp1 0 4 有兩個數 dp1 1 2 有兩個數 dp...

騎士撥號器 c 解題思路

騎士撥號器 c 解題思路 思路 每乙個號碼,是由上面一輪的某個或者某幾個號碼,通過跳 日 得到的。include include include using namespace std 騎士跳 日 long m 1e9 7 intknightdialer int n 儲存最終結果的vetor vec...

每日刷題 騎士撥號器

這一次,我們將 騎士 放在 撥號盤的任意數字鍵 如上圖所示 上,接下來,騎士將會跳 n 1 步。每一步必須是從乙個數字鍵跳到另乙個數字鍵。每當它落在乙個鍵上 包括騎士的初始位置 都會呼出鍵所對應的數字,總共按下 n 位數字。你能用這種方式呼出多少個不同的號碼?因為答案可能很大,所以輸出答案模 10 ...