蛇形矩阵找人给我解释下,我新手看不懂,越详细越好 ,

来源:百度知道 编辑:UC知道 时间:2024/07/02 08:41:43
#include <iostream>
using namespace std;
int main()
{
int **array;
int i, j, k, n, x = 1, y = -1, flag = 0;
cin >> n;
array = new int*[n];
for(i = 0; i < n; i++)
array[i] = new int[n];
for(i = 0, j = 0, k = 0; i < n * n; i++)
{
if(j < 0)
{
j = 0;
flag = 1;
x = 1;
y = -1;
}
else if(j >= n)
{
if(k < 0)
k = 1;
else
k += 2;
j = n - 1;
y = 1;
x = -1;
}
if(k < 0)
{
k = 0;
x = -1;
y = 1;
}
else if(k >= n)
{
if(flag)
j++;
else
j += 2;
k = n - 1;
x = 1;
y = -1;
}
array[j][k] = i + 1;
j += x;
k += y;
flag = 0;
}
for(j = 0; j < n; j++)
{
for(k = 0; k < n; k++)
cout << array

#include <iostream>
using namespace std;
int main()
{
int **array; //二级指针
int i, j, k, n, x = 1, y = -1, flag = 0;
cin >> n;
array = new int*[n]; //声明为n个指向一维数组的指针
for(i = 0; i < n; i++)
array[i] = new int[n];//这n个指针分别指向n个有n个元素的一维数组
for(i = 0, j = 0, k = 0; i < n * n; i++)//给数组中个元素赋值
{
if(j < 0)
{
j = 0;
flag = 1;
x = 1;
y = -1;
}
else if(j >= n)
{
if(k < 0)
k = 1;
else
k += 2;
j = n - 1;
y = 1;
x = -1;
}
if(k < 0)
{
k = 0;
x = -1;
y = 1;
}
else if(k >= n)
{
if(flag)
j++;
else
j += 2;
k = n - 1;
x = 1;
y = -1;
}
array[j][k] = i + 1; //array[j][k] 即为二维数组的元素
j += x;
k += y;
flag = 0;
}<