Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: Sơ lược về Ma Phương trong lập trình C

  1. #1
    No Avatar
    Color of the Sun Khách

    Thumbs up Sơ lược về Ma Phương trong lập trình C

    Mình giới thiệu cho các bạn về ma phýõng. Một trong những ðiều "huyền bí" của toán học cổ ðại phýõng ðông lẫn phýõng tây. Vậy Ma phýõng là gì?
    - Ma phýõng cấp n là 1 ma trận vuông cấp n chứa các số từ 1 ðến n bình phýõng
    - Tổng 1 cột bất kỳ = tổng 1 hàng bất kỳ = tổng 1 ðýờng chéo bất kỳ = hằng số Sn. Sn tính theo công thức n(n*n+1)/2.
    -Ma phýõng lẻ có cấp n là số lẻ(n>3): 3 , 5, 7...
    -Ma phýõng lẻ có cấp n là số chẵn(n>4): 4 , 6, 8...

    Ví dụ:
    Ma phýõng cấp 3:
    PHP Code:
    6 1 8
    7 5 3
    2 9 4 

    Ở bài này mình chỉ bàn về thuật giải ma phýõng lẻ:
    Giải thuật in ra ma phýõng lẻ

    Giải thuật :
    - Ghi số 1 ở hàng 1 cột giữa.
    - Khi ðã ghi số k xác ðịnh vị trí số thứ k+1 nhý sau:
    Lùi 1 hàng, lùi 1 cột
    Nếu hàng = 0 thì chuyển cho hàng = n
    Nếu cột = 0 thì chuyển cho cột = n
    Nếu tại vị trí cần tìm ðã có số thì ghi ngay dýới số vừa ghi

    Ðây là ðoạn CODE của mình:
    C Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. main()
    4. {
    5.  clrscr();
    6.  int a[100][100],n,k,i,j,tam;
    7.  printf("nhap vao cap cua ma phuong :");scanf("%d",&n);
    8.  for(i=1;i<=n;i++)
    9.     for(j=1;j<=n;j++)
    10.       a[i][j]=0;
    11.  for (k=1;k<=n*n;k++)
    12.    if (k==1){ i=1;j=n/2+1; a[i][j]=k;i--;j--;}
    13.    else
    14.     {
    15.     if (i==0) i=n;
    16.     if (j==0) j=n;
    17.     if (a[i][j]==0) a[i][j]=k;
    18.     else if (i==n&&j==n) {i=2;j=1; a[i][j]=k; }
    19.     else {i=i+2;j=j+1;a[i][j]=k;     }
    20.     i--;j--;
    21.     }
    22.  for (i=1;i<=n;i++)
    23.   { for (j=1;j<=n;j++)
    24.     printf("   %2d",a[i][j]);
    25.     printf("\n");printf("\n");
    26.   }
    27.  getch();
    28. }
    Còn ma phýõng chẵn thì khó và rắc rối hõn ma phýõng lẻ nhiều.
    Mình ðính kèm file các bạn về ðọc thử nha.
    Chết rồi sao ðính kèm file không ðýợc vậy.
    Mình ðýa các bạn cái link:
    http://www.vphausa.org/vphavn/vdt/Ma%20Phuong.pdf
    Mong rằng bài viết có ích cho các bạn.

  2. #2
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Tổng các hàng cột 2 đường chéo chính là 1 số cố định .
    Code con này nhiều lắm .. hình như pete đã post 1 phát bài này rồi thì phải
    None!

  3. #3
    No Avatar
    phoenix2007 Khách

    Mình vẫn chưa hiểu về giải thuật, bạn có thể giải thích thêm tí kô ?

  4. #4
    Ngày gia nhập
    12 2011
    Bài viết
    1

    Mặc định giải thuật của bạn bị sai code thì đúng

    Ví dụ:
    Ma phýõng cấp 3:
    PHP Code:
    6 1 8
    7 5 3
    2 9 4 

    Ở bài này mình chỉ bàn về thuật giải ma phương lẽ
    Giải thuật in ra ma phương lẻLùi 1 hàng, lùi 1 cột
    Nếu hàng = 0 thì chuyển cho hàng = n
    Nếu cột = 0 thì chuyển cho cột = n
    nếu hàng và cột cùng bằng n thì hàng=2, cột bằng 1
    Nếu tại vị trí cần tìm đã có số thì hàng tăng 2 cột tăng 1

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn