输入N,求一个矩阵N*N,规定矩阵沿45度线递增,形成zigzag数组
代码写的有点挫,不过容易理解
#include <iostream>
#include<stdio.h>
using namespace std;
void main()
{
int N;//矩阵大小
cin>>N;
cout<<endl;
int **arr=new int*[N];
for(int i=0;i<N;i++)
{
arr[i]=new int[N];
}
int num=0;
arr[0][0]=num++;
int j=0;//记录列值
for(int i=0;i<N;)
{
if(j%2==0&&i==0&&j!=N-1)//如果i为偶数,往前走一步再往下走
{
j++;
arr[i][j]=num++;
while(j>0)
{
i++;
j--;
arr[i][j]=num++;
}
}
if(j==0&&i%2==1&&i!=N-1)//如果j为奇数,下移一步往上走
{
i++;
arr[i][j]=num++;
while(i>0)
{
i--;
j++;
arr[i][j]=num++;
}
}
if(j==N-1)
{
i++;
arr[i][j]=num++;
while(i<N-1)
{
i++;
j--;
arr[i][j]=num++;
}
}
if(i==N-1)
{
j++;
arr[i][j]=num++;
while(j<N-1)
{
i--;
j++;
arr[i][j]=num++;
}
}
if(i==N-1&&j==N-1)break;
}
//--------------------over------------------
for(int i=0;i<N;i++)
{
for(int j=0;j<N;j++)
{
cout<<arr[i][j]<<" ";
}
cout<<endl;
}
system("pause");
}