题中的数据范围1 <= n <= 39, 但是为什么我的二维数组开到了50 * 50还是不够用,会re,但是换成100 * 100就可以了,为什么会这样?
#include <iostream>
using namespace std;
int main()
{
int a[100][100];
int n;
cin >> n;
a[1][(n + 1) / 2] = 1;
int x = 1, y = (n + 1) / 2;
for(int i = 2; i <= n * n; i++)
{
if(x == 1 && y != n)
{
x = n; y++;
a[x][y] = i;
}
else if(x != 1 && y == n)
{
x--; y = 1;
a[x][y] = i;
}
else if(x == 1 && y == n)
{
x++;
a[x][y] = i;
}
else if(x != 1 && y != n)
{
if(!a[x - 1][y + 1])
{
x--; y++;
a[x][y] = i;
}
else
{
x++;
a[x][y] = i;
}
}
}
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= n; j++)
{
cout << a[i][j] << ' ';
}cout << endl;
}
return 0;
}