解题思路
DFS
1.构造图,n*n的矩阵,连通则为1
2.dfs递归,记录步数还有当前所在位置,再利用当前位置的下标取出road中的数组,如果值为1就代表是连通的
3.如果步数达到要求,且所在位置为n-1则ans++
代码
class Solution {
int ans = 0;
public int numWays(int n, int[][] relation, int k) {
int[][] road = new int[n][n];
for(int i=0;i<relation.length;i++){
int[] tem = relation[i];
road[tem[0]][tem[1]] = 1;
}
dfs(0,0,n,k,road);
return ans;
}
public void dfs(int index,int step,int n,int k,int[][] road){
if(step==k){
if(index==n-1){
ans++;
}
return;
}
int[] go = road[index];
for(int i=0;i<go.length;i++){
if(go[i]==1){
dfs(i,step+1,n,k,road);
}
}
}
}