【劍指offer】13.機器人的運動範圍

13.機器人的運動範圍

面試題13. 機器人的運動範圍

難度中等96

地上有一個m行n列的方格,從座標 [0,0] 到座標 [m-1,n-1] 。一個機器人從座標 [0,
0]的格子開始移動,它每次可以向左、右、上、下移動一格(不能移動到方格外),也不能進入行座標和列座標的數位之和大於k的格子。例如,當k爲18時,機器人能夠進入方格
[35, 37] ,因爲3+5+3+7=18。但它不能進入方格 [35, 38],因爲3+5+3+8=19。請問該機器人能夠到達多少個格子?

示例 1:

輸入:m = 2, n = 3, k = 1
輸出:3

示例 2:

輸入:m = 3, n = 1, k = 0
輸出:1

回溯

用visited記錄當前是否訪問過,終止條件 i j條件

    	int m = 0;//行
        int n = 0;//列
        int k = 0;//閾值
        boolean [][] visited;//記錄是否訪問過 
        public int movingCount(int m, int n, int k) {
            this.m = m;
            this.n = n;
            this.k = k;
            visited = new boolean [m][n];
            return count(0,0);
        }
    
        private int count(int i,int j){
            if(i<0||j<0|| i>=m || j >= n|| visited[i][j] || i/10+i%10+j/10+j%10>k){
                return 0;
            }
            visited[i][j] = true;
            return 1+count(i+1,j) + count(i-1,j)+count(i,j+1)+count(i,j-1);
        }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章