0
私は基本的に2次元配列のサイズ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--;
}
対角軸に沿ってミラーリングすることもできます。さらに2つの魔方陣が得られます。 – Steeve