Giúp bạn nửa bài, điền các số từ 1 đến n*n vào ma trận theo chiều kim đồng hồ
C++ Code:
#include <stdio.h>; struct Huong { int x; int y; }; Huong huong[4]={{1,0},{0,1},{-1,0},{0,-1}}; int huongdi=0; int x=0; int y=0; int MaTran[100][100]; int DoiHuong(int i) { if(i<3) { i++; } else { i=0; } return i; } void init(int n) { for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { MaTran[i][j]=-1; } } } void MaTranXoanOc(int n) { init(n); for(int i=1;i<=n*n;i++) { MaTran[y][x]=i; int xx=x+huong[huongdi].x; int yy=y+huong[huongdi].y; if(xx<0||xx>n-1||yy<0||yy>n-1||MaTran[yy][xx]>0) { huongdi=DoiHuong(huongdi); } y+=huong[huongdi].y; x+=huong[huongdi].x; } } void XuatMang(int n) { for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { printf("%d ",MaTran[i][j]); } printf("\n"); } } int main() { MaTranXoanOc(6); XuatMang(6); getchar(); }