螺旋矩陣

編程打印如圖所示的n×n的方陣。
螺旋矩陣
如圖爲順時針螺旋:
算法思想:先把圖形分成幾個圈,及“1~12”爲第一圈,“13~16”爲第二圈;並定義下標變量是i,由於n與圈數的關係,(例如n=3、4均爲兩圈),所以下標變量範圍1~(n+1)/2。
(1)i行,從i列到n-i列 (n=4,i=1時“擺放1,2,3”) 上方
(2)n+1-i列,從i行到n-i行 (n=4,i=1時“擺放4,5,6”) 右側
(3)n+1-i行,從n+1-i行到i+1列(n=4,i=1時“擺放7,8,9”)下方
(4)i列,從n+1-i行到i+1行 (n=4,i=1時“擺放10,11,12”)左側
程序如下:
#include<stdio.h>
void main()
{
int i,j,a[100][100],n,k;
printf("輸入n的值:");
scanf("%d",&n);
k=1;
for(i=1;i<=n/2;i=i+1)
{
for(j=i;j<=n-i;j=j+1) //上方
{
a[i][j]=k;
k=k+1;
}
for(j=i;j<=n-i;j=j+1) //右側
{
a[j][n-i+1]=k;
k=k+1;
}
for(j=n-i+1;j>=i+1;j=j-1) //下方
{
a[n-i+1][j]=k;
k=k+1;
}
for(j=n-i+1;j>=i+1;j=j-1) //左側
{
a[j][i]=k;
k=k+1;
}
}
if(n%2==1)
{
i=(n+1)/2;
a[i][i]=n*n;
}
for(i=1;i<=n;i=i+1)
{
for(j=1;j<=n;j=j+1)
printf("%4d",a[i][j]);
printf("\n");
}
printf("\n");
}
若想要做一個逆時針的螺旋矩陣,只需要改改邏輯值就好了
每一次的編程都是自己的收穫,珍惜~~~
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章