n∗n的蛇形矩阵。
题目:给一个整数n,输出n∗n的蛇形矩阵
样例输入:
4
样例输出:
1 2 6 7
3 5 8 13
4 9 12 14
10 11 15 16
解题思路:
1.关键—>先输出倒三角,在输出正三角。
2.具体的代码和解释在下面。
#include <iostream>
using namespace std;
int main()
{
int i, j, a[100][100] = { 0 },n,k=1;//定义数组, 和要输出的矩形行列数 ,从1开始累加的值
cin >> n;
//输出倒三角
for (i = 0; i < n; i++) //倒三角斜着的列数,
for (j = 0; j <= i; j++) //每次进行填充的值,行列不超过 i 0 1 2
{
if (i % 2 == 0)//因为是连续的所以要上下区分
a[i - j][j] = k++;//偶数行,i-j来控制当前的行,j的累加单独控制列 往上 0,1 1,0
else
a[j][i - j] = k++;//奇数行,反过来往下 2,0 1,1 0,2
}
//输出正三角
for (i = n; i < 2 * n - 1; i++) // i从n开始填充——因为n之前的列数已经填完了,i此时需要填充的列数为 n*2-1
for (j = 1; j < 2 * n - i; j++)//第一行已经填完了,直接从第二行开始j = 1, 2*n-i和上述同理 4 3 2
{
if (i % 2 == 0)
a[n - j][i - n + j] = k++;//往上 ——3,1,2,2,1,3
else
a[i - n + j][n - j] = k++;//往下 ——1,3 2,2,3,1
}
for (i = 0; i < n; i++)//输出
{
for (j = 0; j < n; j++)
cout << a[i][j]<<" " ;
cout << endl;
}
system("pause");
return 0;
}