大一在校生 搜了网上了 有很多看不懂 这样老师肯定知道是抄的 麻烦大神们有没有简单易懂一点的程序 谢谢!!
#include <iostream>
using namespace std;
void snakeLikeMat(int **a, int n)
{
int num = 1;
int total = n*n;
for (int i = 0; i < n; i++)
{
for (int j = 0; j <= i; j++)
{
if (i % 2 == 0)
{
a[j][i - j] = num++;
}
else
{
a[i - j][j] = num++;
}
}
}
for (int i = 0; i < n - 1; i++)
{
for (int j = 0; j <= i; j++)
{
if (i % 2 == 0)
{
a[n - 1 - j][n - 1 - i + j] = total--;
}
else
{
a[n - 1 - i + j][n - 1 - j] = total--;
}
}
}
}
int main()
{
int ha = 0;
cin >> ha;
int **a = new int*[ha];
for (int i = 0; i < ha; i++)
{
a[i] = new int[ha];
}
snakeLikeMat(a, ha);
for (int i = 0; i < ha; i++)
{
for (int j = 0; j < ha; j++)
{
cout << a[i][j] << "\t";
}
cout << endl;
}
for (int i = 0; i < ha; i++)
{
delete[] a[i];
}
delete[] a;
return 0;
}
思路:
1.蛇形矩阵每行要显示那些数据必须先搞清楚;
2.以最后一行的字符数为每行要打印的总字符数,不足部分打印空格,右边一半空格不用打印;
3.每个数字中间都要打印一个空格。