九章演算法 微軟面試題 騎士撥號器

2021-10-07 12:07:17 字數 1085 閱讀 3717

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

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

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

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

1≤n≤5000

樣例 1:

輸入:1

輸出:10

說明:答案可能是0,1,2,3, ... , 9,

樣例 2:

輸入:2

輸出:20

說明:答案可能是04, 06, 16, 18, 27, 29, 34, 38, 43, 49, 40, 61, 67, 60, 72, 76, 81, 83, 94, 92。

樣例 3:

輸入:3

輸出:46

【題解】本題採用動態規劃的方法,考慮每一步棋子變化的狀態,進行統計。我們可以使用滾動陣列節省空間。

class

solution

,,,,,

{},,,,};int

dp=newint[2

][10

];arrays

.fill(dp

[0],1

);for

(int

hops=0

;hops

1;++hops)}

long

ans=0;

for(

intx:

dp[~n&

1])ans+=x;

return

(int)(

ans%

mod);

}

更多語言**參見:九章演算法

九章演算法 微軟面試題 加熱器

描述 冬天來啦!你的任務是設計出乙個具有固定加熱半徑的加熱器,使得所有房屋在這個冬天不至於太冷。現在你能夠獲知所有房屋和加熱器所處的位置,它們均分布在一條水平線中。你需要找出最小的加熱半徑使得所有房屋都處在至少乙個加熱器的加熱範圍內。所以,你的輸入將會是所有房屋和加熱器所處的位置,期望輸出為加熱器最...

九章演算法 微軟面試題 公平索引

現在給你兩個長度均為n的整數陣列 a 和 b。當 a 0 a k 1 a k a n 1 b 0 b k 1 和 b k b n 1 四個和值大小相等時,稱索引k是乙個公平索引。也就是說,索引k 可以使得a,b 兩個陣列被分成兩個非空陣列,這四個子陣列的和值相等。例如,陣列a 4,1,0,3 b 2...

九章演算法 蘇州微軟面試題 程式檢查

描述 有一種程式語言,只有以下五種命令,每種命令最多有兩個引數,請檢查給定的程式是否可能無限迴圈。這些命令分別是 label 宣告乙個標籤,引數是乙個字串,且每個標籤只宣告一次。goto 跳轉到乙個標籤,並從標籤處開始按順序執行程式。halt 停機,程式終止。gotorand 隨機跳轉到兩個標籤中的...