图论17(Leetcode864.获取所有钥匙的最短路径)

用二进制表示获得的钥匙,假设n=钥匙个数

000000000代表没有钥匙,0000000001代表有idx为1的钥匙,0000000011代表有idx=1,2的钥匙

(这方法巧妙又复杂..

代码:

class Solution {
    static int[][] dirs = {{-1,0},{1,0},{0,-1},{0,1}};
    public int shortestPathAllKeys(String[] grid) {
        int m = grid.length, n = grid[0].length();
        int startx = 0,starty = 0;
        Map keyToIndex = new HashMap<>();
        //存钥匙的字母和对应的idx序号
        for(int i=0;i queue = new ArrayDeque();
        int[][][] dist = new int[m][n][1<=0 && nx=0 && ny

你可能感兴趣的:(图论,算法,数据结构)