Tính tổng hàng thứ k trong ma trận xoắn ốc N * N

Ma trận xoắn ốc vuông NxN là ma trận chứa các phần tử tăng dần từ 1 và đi theo chiều xoắn ốc. Xem ví dụ để hiểu rõ hơn:

Ma trận xoắn ốc vuông 3x3:
image
Ma trận xoắn ốc vuông 4x4:
image
Cho hai số nguyên dương Nk , bạn hãy viết hàm trả về tổng của hàng thứ k (tính từ trên xuống) trong ma trận xoắn ốc NxN .
Ví dụ:

  • Với N = 3, k = 2 thì output là sumRow(N, k) = 21 .
    Giải thích: 8 + 9 + 4 = 21 .
  • Với N = 4, k = 3 thì output là sumRow(N, k) = 48 .
    Giải thích: 11 + 16 + 15 + 6 = 48 .
int sumRow(int N, int k)
{
	
}

N < 100000 luôn :smiley: có thể làm trong 2*số vòng xoắn + O(1) bước :slight_smile:

2 Likes

bạn có thể nói rõ hơn được không ạ?

Đếm từ ngoài vào trong thì dòng thứ m cần phải chạy m vòng thì mới phủ đầy đủ. Dòng ở nửa trên (m > 0) cần 2m-1 ô và dòng ở nửa dưới cần 2m ô. Dòng chính giữa được tính là dòng nửa trên.

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?