Advertisement

AcWing 1116. 马走日解答(搜索—DFS)

阅读量:

AcWing 1116. 马走日
DFS的典型应用场景中,关键在于如何记录已访问的节点数量,如何确认是否已遍历所有节点,以及在DFS过程中如何执行回溯操作以恢复状态。

复制代码
    #include<bits/stdc++.h>
    
    using namespace std;
    
    const int N = 10;
    
    int T;
    int n, m;
    bool st[N][N];
    int ans;
    int dx[8] = {-1, -2, -2, -1, 1, 2, 2, 1};
    int dy[8] = {-2, -1, 1, 2, 2, 1, -1, -2};
    
    void dfs(int x, int y, int cnt){
    	if(cnt == n * m){  //如果搜索过的点数等于地图点数,就代表已经遍历完一遍地图
    		ans ++ ;
    		return ;
    	}
    	
    	st[x][y] = true;
    	
    	for(int i = 0; i < 8; i ++ ){
    		in

全部评论 (0)

还没有任何评论哟~