Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

In ma trận xoắn ốc n×n dùng O(1) bộ nhớ phụ trong C

Bài toán

Tạo và in ma trận xoắn ốc n×n (số chẵn) theo chiều kim đồng hồ, chỉ dùng O(1) không gian phụ.

Ví dụ n=3

Output:
18 16 14
4  2  12
6  8  10

In ma trận xoắn ốc n×n dùng O(1) bộ nhớ phụ trong C

Công thức toán học

Xác định "layer" x = min(i, j, n-1-i, n-1-j)

  • Nửa trên- phải (i ≤ j): value = 2×[(n-2x)² - (i-x) - (j-x)]
  • Nửa dưới- trái (i > j): value = 2×[(n-2x-2)² + (i-x) + (j-x)]

Mã nguồn C

#include <stdio.h>

void spiralmatrix(int n) {
    for (int i=0; i

Kết quả n=3

18 16 14
4  2  12
6  8  10