Я работал над некоторым кодом, который создавал бы магический квадрат, который в основном представляет собой массив 2d размером n x n с элементами от 1 до n^2 с каждым столбцом, строкой и диагональным суммированием до одного и того же числа.Как создать несколько массивов 2D Magic Square?
вот что у меня до сих пор, проблема в том, что он создает один и тот же массив 2d каждый раз. Я начинаю с размещения 1 в крайнем правом ряду. Будет ли такой же подход позволить мне создать еще 3 магических квадрата?
std::cout << "Enter the size of a magic square: \n";
int n;
std::cin >> n;
int magicSquare[n][n];
// set all slots as 0
memset(magicSquare, 0, sizeof(magicSquare));
// Initialize position for 1
int row = n/2;
int col = n-1;
for (int num=1; num <= n*n;)
{
if (row==-1 && col==n)
{
row = 0;
col = n-2;
}
else
{
if (col == n)
col = 0;
if (row < 0)
row=n-1;
}
if (magicSquare[row][col])
{
col -= 2;
row++;
continue;
}
else
magicSquare[row][col] = num++;
col++;
row--;
}
Вы также можете зеркально отразить его по диагональным осям, и вы получите еще два магических квадрата. – Steeve