50050. Spiral Snake
難度:3/5 Used Time: 15:11
由1
2
3// <1 ^1 >2 v2 <2 ---- 3x3
// <1 ^1 >2 v2 <3 ^3 >4 v4 <4 ---- 5x5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34void SpiralSnake(int N, int *snake, int *result){
int grid[1024][1024] = {0};
int x = N / 2, y = N / 2;
int cnt = 0;
grid[x][y] = snake[cnt++];
for(int t = 0; t < N / 2; t++){
for(int i = 0; i < 2 * t + 1; i++){
y -= 1;
grid[x][y] = snake[cnt++];
}
for(int i = 0; i < 2 * t + 1; i++){
x -= 1;
grid[x][y] = snake[cnt++];
}
for(int i = 0; i < 2 * t + 2; i++){
y += 1;
grid[x][y] = snake[cnt++];
}
for(int i = 0; i < 2 * t + 2; i++){
x += 1;
grid[x][y] = snake[cnt++];
}
}
for(int i = N - 2; i >= 0; i--){
grid[N - 1][i] = snake[cnt++];
}
for(int i = 0; i < N; i++){
for(int j = 0; j < N; j++){
result[i * N + j] = grid[i][j];
}
}
}