链接
https://www.acwing.com/problem/content/758/
思路
题干的意思是让你顺时针去填空每一个位置
它是写游戏常见的思路:有墙就拐弯。
另外这里还可以通过偏移来减少判断的代码量
详细见代码注解
相关题目
题目844 走迷宫
题目1102 移动骑士
题目1421 威斯康星方形牧场
#includeusing namespace std; const int N = 110; int q[N][N]; int main() { int n, m; cin >> n >> m; int dx[] = {-1, 0, 1, 0}, dy[] = {0, 1, 0, -1}; int x = 0, y = 0, d = 1;//定义初始填充位置与方向 for (int i = 1; i <= n * m; i ++) { q[x][y] = i;//填充每一个位置 int a = x + dx[d], b = y + dy[d];//如果没有撞墙,就一直延着一个方向走 if(a < 0 || a >= n || b < 0 || b >= m || q[a][b])//墙,已经填充的位置也变成了墙 { d = (d + 1) % 4;//如果撞墙了,就换方向 a = x + dx[d], b = y + dy[d]; } x = a, y = b; } for (int i = 0; i < n; i ++ ) { for (int j = 0; j < m; j ++ ) { cout << q[i][j] << ' '; } cout << endl; } return 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)