1. 程式人生 > >蛇形矩陣(完全)

蛇形矩陣(完全)

畫 n階蛇形方陣
比如如圖是5階方陣(5條對角線)
1 2 6 7 15
3 5 8 14 16
4 9 13 17 22
10 12 18 21 23
11 19 20 24 25

解題思路:
1.分為上三角和下三角,上三角的思路是同蛇形矩陣(不完全)
注意應該判斷前面對角線個數的奇偶性來確定是前面對角線之和加行還是列;奇加行,偶加列;
2.至於下三角則需要用到對稱的思想:
首先易推知a[i][j]的對稱式為a[n+1-i][n+1-j],如5階矩陣中a[2][5]對稱式a[4][1],
其次根據對稱的兩對數之和等於n*n+1,
就可以利用已知的上三角來求下三角了;具體見程式碼;

具體程式碼如下:

#include <stdio.h>
#include <string.h>
 int main()
 {
   int x,y,i,j,k,sum,n;
   int a[105][105];
     x=y=1;
     memset(a,0,sizeof(a));
     scanf("%d",&n);
     for (i=1;i<=n;i++)
        for (j=1;j<=n+1-i;j++)
     {
         k=i+j-2;
         sum=(k+1)*k/2;
         if
(k%2)//如果前面的對角線個數是奇數 a[i][j]=sum+i; else a[i][j]=sum+j; } for (i=1;i<=n;i++) for (j=n-i+2;j<=n;j++) a[i][j]=n*n+1-a[n+1-i][n+1-j]; for (i=1;i<=n;i++) { for (j=1;j<=n;j++) printf("%5d",a[i][j]); printf
("\n"); } return 0; }

僅代表個人見解!