文章

84

粉丝

2

获赞

597

访问

25.2k

头像
旋转方阵 题解:

#include<iostream>
#include<cstdio>

using namespace std;

int s[25][25];

int main() {
	int n;
	cin >> n;
	
	int dx[4] = {1, 0, -1, 0}, dy[4] = {0, 1, 0, -1};
	int dir = 0;
	for (int x = 0, y = 0, k = 1; k <= n * n; k ++ ) {
		s[x][y] = k;
		x += dx[dir], y += dy[dir];
		if (x < 0 || y < 0 || x >= n || y >= n || s[x][y] != 0) {
			x -= dx[dir], y -= dy[dir];
			dir = (dir + 1) % 4;
			x += dx[dir], y += dy[dir];
		}
	}
	for (int i = 0; i < n; i ++) {
        for (int j = 0; j < n; j ++) {
            printf("%-4d",s[i][j]);
        }
        cout << endl;
    }
    return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发