用一维数组存储上三角螺旋矩阵

王朝other·作者佚名  2008-06-01
宽屏版  字体: |||超大  

初学编程,程序中很多地方都不够完备,望大家见谅。

#include <iostream.h>

#include <iomanip.h>

#include <stdio.h>

#define m 20

#define h(i,j) ((2*c+2-i)*(i-1)/2+j-i+1) //二维数组中元素在一维数组中的位置

main()

{ int i=1,j=0,s=0,k,n,c;

int a[m*(m+1)/2+1];

a[1]=1;

printf("please input the number\n");

scanf("%d",&n);

c=n;

while(n>0)

{

for(k=1;k<=n;k++){j++;a[h(i,j)]=++s;}n--;//横向赋值

for(k=1;k<=n;k++){i++;a[h(i,j)]=++s;}n--;//纵向赋值

for(k=1;k<=n;k++){j--;i--;a[h(i,j)]=++s;}n--;//斜向赋值

}

k=0;

for(i=1;i<=c;i++)

for(j=1;j<=c;j++)

{

if(i>j)

cout<<setw(4)<<"0";

else

if(j==c){k++; cout<<setw(4)<<a[k]<<endl; } else {k++;cout<<setw(4)<<a[k];}

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有