首页 > 学院 > 开发设计 > 正文

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

2019-11-17 05:30:09
字体:
来源:转载
供稿:网友
    初学编程,程序中很多地方都不够完备,望大家见谅。      #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];}
 }
}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表