1 条题解

  • 2
    @ 2026-7-26 15:32:00
    #include<bits/stdc++.h>
    using namespace std;
    int n,m,a[100][100],ans=1;
    bool vis[100][100];
    int dy[]={1,0,-1,0};
    int dx[]={0,1,0,-1};
    bool check(int x,int y){
    	if(x<=0 || y<=0 || x>n || y>m){
    		return false;
    	}
    	if(vis[x][y]){
    		return false;
    	}
    	return true;
    }
    void dfs(int x,int y){
    	for(int i=0;i<4;++i){
    		int nx=x+dx[i],ny=y+dy[i];
    		if(check(nx,ny)){
    			vis[nx][ny]=true;
    			a[nx][ny]=++ans;
    			dfs(nx,ny); 
    		}
    	}
    }
    int main(){
    	cin>>n>>m;
    	a[1][1]=1;
    	vis[1][1]=true;
    	dfs(1,1);
    	for(int i=1;i<=n;++i){
    		for(int j=1;j<=m;++j){
    			cout<<setw(3)<<a[i][j];
    		}
    		cout<<endl;
    	}
    	return 0;
    }
    • 1

    信息

    ID
    204
    时间
    1000ms
    内存
    128MiB
    难度
    5
    标签
    递交数
    4
    已通过
    3
    上传者