fork download
  1. #include <iostream>
  2.  
  3. using namespace std;
  4. int main() {
  5. int N;
  6. cin >> N;
  7.  
  8. // Khởi tạo ma trận N x N với giá trị ban đầu là 0
  9. int matrix [N][N] = {0};
  10.  
  11. int Num = 1; // Biến Num để điền số thứ tự vào ma trận
  12. int start = 0; // Điểm bắt đầu vòng lặp hiện tại
  13. int end = N; // Điểm kết thúc vòng lặp hiện tại (ban đầu bằng N)
  14.  
  15. // Vòng lặp xoắn ốc điền các giá trị vào ma trận
  16. while (start < end) {
  17.  
  18. // Điền hàng trên cùng từ trái sang phải
  19. for (int i = start; i < end; i++) {
  20. matrix[start][i] = Num++;
  21. }
  22.  
  23. // Điền cột bên phải từ trên xuống dưới
  24. for (int i = start + 1; i < end; i++) {
  25. matrix[i][end - 1] = Num++;
  26. }
  27.  
  28. // Điền hàng dưới cùng từ phải sang trái
  29. for (int i = end - 2; i >= start; i--) {
  30. matrix[end - 1][i] = Num++;
  31. }
  32.  
  33. // Điền cột bên trái từ dưới lên trên
  34. for (int i = end - 2; i > start; i--) {
  35. matrix[i][start] = Num++;
  36. }
  37.  
  38. // Di chuyển vùng xoắn ốc vào trong
  39. start++;
  40. end--;
  41. }
  42.  
  43. // In ma trận
  44. for (int i = 0; i < N; i++) {
  45. for (int j = 0; j < N; j++) {
  46. cout << matrix[i][j] << " ";
  47. }
  48. cout << '\n';
  49. }
  50.  
  51. return 0;
  52. }
  53.  
Runtime error #stdin #stdout 0.95s 2095756KB
stdin
Standard input is empty
stdout
Standard output is empty