3 条题解

  • 0
    @ 2024-6-23 11:10:37
    #include<bits/stdc++.h>
    using namespace std; 
    int a[10000][10000],cur[10000][10000];
    int n;
    int vis[8][2] = {{1,0},{1,1},{1,-1},{-1,0},{-1,1},{-1,-1},{0,1},{0,-1}};
    int cnt = 0;
    void dfs(int x, int y){
    	
    	if(x == 1 && y == n){
    		cnt++;
    		return;
    	}
    	for(int i = 0;i < 8;i++){
    		if(cur[x + vis[i][0]][y + vis[i][1]] == 0 && a[x + vis[i][0]][y + vis[i][1]] == 1){
    			cur[x + vis[i][0]][y + vis[i][1]] = 1;
    			dfs(x + vis[i][0],y + vis[i][1]);
    			cur[x + vis[i][0]][y + vis[i][1]] = 0;
    		}
    	}
    }
    int main(){
    	
    	cin >> n;
    	for(int i = 1;i <= n;i++){
    		for(int j = 1;j <= n;j++){
    			cin >> a[i][j];
    			if(a[i][j] == 1){
    				a[i][j] = 0;
    			}
    			else{
    				a[i][j] = 1;
    			}
    		}
    	}
    	cur[1][1] = 1;
    	dfs(1,1);
    	cout << cnt;
    	
    }
    

    信息

    ID
    1296
    时间
    1000ms
    内存
    256MiB
    难度
    6
    标签
    递交数
    299
    已通过
    91
    上传者