所以我的輸入應該是一個n×n個不超過每9個字符的單詞(N < = 20)矩陣。輸出應該是一個字符串句子,通過從左上角開始以順時針螺旋方式讀取矩陣形成。在一些幫助下,我設法讓它運作起來,儘管我完全理解正在發生的事情仍然有些麻煩。我絕對不知道如何以相反的方式做到這一點 - 從右下角開始逆時針旋轉。這是我的代碼到目前爲止:如何在C++中逆時針讀取char矩陣?
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;
任何想法?還有沒有更簡單的方法來做到這一點?
謝謝!這真的很有用,而且更容易。我注意到了兩個錯誤。我固定的第一個 - 應該是[y] [x]。第二個,但是,我不能。螺旋整數有問題。不管我有多混亂(將「螺旋++」放在不同方向的「elses」上),它就無法工作。 3x3與螺旋++的方向正確和下來,但就是這樣。 – user3213110
至於y/x的位置,它是基於您的原始代碼,我看不到您的數據,所以很好。至於另一方面,你是正確的,螺旋++是在錯誤的地方。將它移至正確方向的else子句可以解決問題。我修改了我的原始文章,以便您可以看到究竟在哪裏。 –