したがって、私の入力は、それぞれ 9 文字を超えない単語の nxn (n<=20) 行列である必要があります。出力は、行列を左上隅から時計回りに螺旋状に読み取ることによって形成された文字列の文である必要があります。いくつかの助けを借りて、私はそれを機能させることができました..正確に何が起こっているのかを完全に理解するのにまだ苦労しています. 私はそれを逆に行う方法がまったくわかりません-右下隅から始まる反時計回りのスパイラル。これまでの私のコードは次のとおりです。
string s;
int hor = 0, vert = 0;
while (hor < n / 2 && vert < n / 2)
{
for (i = vert; i < n - vert; i++)
s = s + a[hor][i] + " ";
for (i = hor + 1; i < n - hor; i++)
s = s + a[i][n - vert - 1] + " ";
for (i = n - vert - 2; i >= vert; i--)
s = s + a[n - hor - 1][i] + " ";
for (i = n - hor - 2; i > hor; i--)
s = s + a[i][vert] + " ";
hor++;
vert++;
}
if (n % 2)
for (i = vert; i < n - vert; i++)
s = s + a[hor][i] + " ";
else
for (i = hor; i < n - hor; i++)
s = s + a[i][vert] + " ";
cout << s << endl;
何か案は?そして、これを行う簡単な方法はありませんか?