原始题目链接可以参考如下链接 某厂机试算法刷题一览_@_南先森的博客-CSDN博客
在阅读代码时,建议拷贝到idea或者eclipse里面看,为了便于理解代码,注释比较多,
在阅读代码时,可以先删掉注释
这个题目需要用到栈做广度优先搜索,解题主要有以下几个要点
1:要找到没有依赖关系的数字作为起始数字,从起始数字出发
像多米诺骨牌一样往后面的数字传递,依次解锁后面数字
2:使用Map<Integer, List<Integer>>数据结构来记录
数字之间的依赖关系,value依赖key
3:需要用到Stack,可以解锁的数字入栈,用出栈来模拟解锁过程
public class Demo107 {
//测试代码
public static void main(String[] args) {
int n = 6;
int[][] grids = {
{0, 1}, {0, 2}, {0, 3}, {0, 4}, {0, 5}};
boolean r = skipGrid(n, grids);
System.out.println(r);
}
/*
* n代表总共几个数字
* grids存放每一行的两个数字
* 举个例子,如果用户输入下面的数据
* 2
* 1 0
* 0 1
* 那么n = 2 grids = {
{1,0},{0,1}}
*
*/
public static bool