[QUOTE]#include<iostream>
#include<iomanip>
using namespace std;
void main()//运行环境VC6.0++(测试通过)
{
const int N = 4;//由于本人还没有学动态数组,所以只能这样了,可以改下这个值:5,6,7……
int i = 0, j = 0;
int count = 1;
int Array[N][N];
bool up = true;
for (;i + j < 2*N - 2;) //控制数据的移动
{
if (count == 1)
{}
else
if (up)//上移
{
Array[i++][j--] = count++;
for (;i >= 0 && i < N - 1 && j > 0 && j < N - 1;)
{
Array[i++][j--] = count++;
}
}
else//下移
{
Array[i--][j++] = count++;
for (;i > 0 && i < N - 1 && j >= 0 && j < N - 1;)
{
Array[i--][j++] = count++;
}
}
if ((j == 0 && i != N - 1) || j == N - 1)//边缘情况
{
Array[i++][j] = count++;
up = !up;
}
else
{
Array[i][j++] = count++;
up = !up;
}
Array[i][j] = count;
}
for (i = 0;i < N;i++)//打印
{
for (j = 0;j < N;j++)
{
cout << setw(4) << Array[i][j];
}
cout << endl;
}
}
不知道你是什么思路
勉强可以看懂
但让我再写,我还是写不出来
不知道你是用什么思路
谢谢赐教