#include<stdio.h>
#include<iostream>
using namespace std;
void getzigzag(int N)
{
int s,i,j,squa;
//分配内存
int **a = (int**)malloc(N*sizeof(int));
if(a==NULL)
return;
for(i = 0;i<N;i++)
{
if((a[i] = (int *) malloc(N*sizeof(int))) == NULL)
{
while(--i>0)
free(a[i]);
free (a);
return;
}
}
//赋值
squa = N*N;
for(i = 0; i<N;i++)
{
for(j = 0;j<N;j++)
{
s = i+j;
if(s<N)
a[i][j] = s*(s+1)/2+ (((i+j)%2)?i:j);
else
{
s = (N-1-i) + (N-1-j);
a[i][j] = squa - (s*(s+1)/2 + (N-(((i+j)%2)?i:j)));
}
}
}
//打印输出
cout<<endl;
cout<<endl;
for(i = 0;i<N;i++)
{ for(j = 0;j<N;j++)
{
cout<<a[i][j]<<"\t";
}
cout<<endl;
}
int main()
{
int N;
scanf("%d",&N);
getzigzag(N);
return 0;
}
zigzag数组
最新推荐文章于 2022-07-13 23:27:43 发布