题解
【入门】扫地机器人
3 条题解
-
0
#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
#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
#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