题目描述
模拟法解决
C++ 代码
#include<iostream>
using namespace std;
int res[110][110];
int main(){
int n, m;
cin >> n >> m;
int dx[] = {0, 1, 0, -1}, dy[] = {1, 0, -1, 0};
for(int x = 0, y = 0, d = 0, k = 1; k <= n * m;k++){
res[x][y] = k;
int nx = x + dx[d], ny = y + dy[d];
if(nx < 0 || nx >= n || ny < 0 || ny >= m || res[nx][ny]){
d = (d + 1) % 4;
nx = x + dx[d];
ny = y + dy[d];
}
x = nx;
y = ny;
}
for(int i = 0; i < n ; i++){
for(int j = 0 ; j < m ; j++)
cout << res[i][j] << " ";
cout << endl;
}
}