top1编程
← 返回题目
题解

【入门】扫地机器人

3 条题解

  • 0
    @ 2026-7-29 20:22:20
    #include <bits/stdc++.h>
    using namespace std;
    
    int n, m, a[10][10], num;
    int dx[4] = {0, 1, 0, -1};
    int dy[4] = {1, 0, -1, 0};
    
    void dfs(int x, int y) {
        a[x][y] = ++num;
        for (int i = 0; i < 4; i++) {
            int nx = x + dx[i];
            int ny = y + dy[i];
            if (nx >= 1 && nx <= n &&
                ny >= 1 && ny <= m && a[nx][ny] == 0) {
                dfs(nx, ny);
            }
        }
    }
    
    int main() {
        cin >> n >> m;
        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;
    }
    
    • 0
      @ 2026-7-29 0:06:23
      #include <bits/stdc++.h>
      using namespace std;
      
      int n, m, a[10][10], num;
      int dx[4] = {0, 1, 0, -1};
      int dy[4] = {1, 0, -1, 0};
      
      void dfs(int x, int y) {
          a[x][y] = ++num;
          for (int i = 0; i < 4; i++) {
              int nx = x + dx[i];
              int ny = y + dy[i];
              if (nx >= 1 && nx <= n &&
                  ny >= 1 && ny <= m && a[nx][ny] == 0) {
                  dfs(nx, ny);
              }
          }
      }
      
      int main() {
          cin >> n >> m;
          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;
      }
      
      • 0
        @ 2026-7-28 22:09:37
        #include<bits/stdc++.h>
        using namespace std;
        int a[20][20];
        int n,m;
        void f(int x,int y,int z){
        	a[x][y]=z;
        	//向右
        	if(a[x][y+1]==0&&y+1<=m){
        		f(x,y+1,z+1);
        	}
        	//向下
        	if(a[x+1][y]==0&&x+1<=n){
        		f(x+1,y,z+1);
        	}
        	//向左
        	if(a[x][y-1]==0&&y-1>=1){
        		f(x,y-1,z+1);
        	}
        	//向上
        	if(a[x-1][y]==0&&x-1>=1){
        		f(x-1,y,z+1);
        	}
        }
        int main(){
        	cin>>n>>m;
        	f(1,1,1);
        	for(int i=1;i<=n;i++){
        		for(int j=1;j<=m;j++){
        			cout<<setw(3)<<a[i][j];
        		}
        		cout<<endl;
        	}
        }
        
        • 1