DP - 棋盤走法的可能性

問題一

0  1  2              // 0->5,7; 1-> 6,8; 2->3, 7
3  4  5              // 3->2,8,9; 4 ->沒有走法 ; 5->0,6,9;
6  7  8              // 6->1,5; 7-> 0,2; 8-> 1, 3;
.  9  .              // 9->3,5;

給定以上2d Array作為棋盤,起始位置為任意位置,移動方式為走 L型(0可以到5和7,1可以到6,8, 3可以到2和8)。問給定步數k,有幾種走法。

可以理解為數字出現的可能性是固定的,數字只能走到固定的幾個位置且固定的幾個位置也只能到這個數字。所以k次只要疊加就可以了。

動態(tài)解法

時間復雜度O(k+n(1)),空間復雜度為O(n(1)),這里n固定為10個數字,

class Solution {
    public int findSolution(int k) {
        int[] dp = new int[10];
        Arrays.fill(map,1);
        for(int i = 1; i < k; i++) {
            int[] temp = new int[10];
            temp[0] = dp[7]+dp[5];  
            temp[1] = dp[6]+dp[8];
            temp[2] = dp[3]+dp[7];
            temp[3] = dp[2]+dp[8]+dp[9];
            temp[4] = 0;     
            temp[5] = dp[0]+dp[6]+dp[9];
            temp[6] = dp[1]+dp[5];
            temp[7] = dp[0]+dp[2];
            temp[8] = dp[3]+dp[1];
            temp[9] = dp[3]+dp[5];
            dp = temp;
        }
        int res = 0;
        for(int each : dp) res += each;
        return res;
    }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 背景 一年多以前我在知乎上答了有關LeetCode的問題, 分享了一些自己做題目的經驗。 張土汪:刷leetcod...
    土汪閱讀 12,923評論 0 33
  • 1. 鏈表 鏈表是最基本的數據結構,面試官也常常用鏈表來考察面試者的基本能力,而且鏈表相關的操作相對而言比較簡單,...
    Mr希靈閱讀 1,578評論 0 20
  • 本文出自 Eddy Wiki ,轉載請注明出處:http://eddy.wiki/interview-code.h...
    eddy_wiki閱讀 9,449評論 0 30
  • 前天,我和爸爸去水上樂園玩。到了那里,我們先去更衣室換好泳衣泳褲,然后給游泳圈打氣,打完氣我們就去玩兒了...
    宋佳軒閱讀 1,034評論 0 4
  • 可是我想跟你 說話啊
    以南的閱讀 182評論 0 1

友情鏈接更多精彩內容