螺旋矩陣是指一個呈螺旋狀的矩陣,它的數字由第一行開 始到右邊不斷變大,向下變大, 向左變大,向上變大,如此循環,下面跟隨武林技術小編一起來詳細的了解下C++簡單實現螺旋矩陣吧。
通過觀察發現矩陣的下標有這樣一個規律:a行遞增后b列遞增然后c行遞減再d列遞減,但是對應值卻是逐漸增加的。因此可用4個循環實現,需要注意的是在賦值時不要把之前的值覆蓋了。所以在這里選擇相同顔色部分賦值,代碼如下:
?
?
using namespace std;
// 輸出螺旋矩陣
void Matrix()
{
??? const int size = 10; // 矩陣大小
??? int matrix[size][size] = {0};
??? int row = 0;
??? int col = 0;
??? int start = 1; // 起始值
??? int temp = size;
??? for (int count = 0; count ??? {
??????? for (; col ??????????? matrix[row][col] = start++;
??????? for (; row ??????????? matrix[row][col] = start++;
??????? for (col = temp - 1; col > count; col--) // c排賦值
??????????? matrix[row][col] = start++;
??????? for (row = temp - 1; row > count; row--) // d排賦值
??????????? matrix[row][col] = start++;
??????? // 進入下一圈
??????? temp--;
??????? row++;
??????? start -= 1; // 這里-1是因為在換圈的時候會多加1
??? }
??? if (0 != size % 2) // 如果size為奇數則最后會有一個數遍歷不到,這里補上
??? matrix[row][col+1] = start + 1;
??? // 輸出數組
??? for (int i = 0; i ??? {
??????? for (int j = 0; j ??????? {
??????????? cout ??????? }
??????? cout ??? }
}
int main(int argc, char **argv)
{
??? Matrix();
??? return 0;
}
結果如下(分奇、偶數):
?
?
以上就是C++簡單實現螺旋矩陣的實例代碼,如果還有其他疑問,歡迎補充,有任何問題也可以與武林編輯一起討論。
新聞熱點
疑難解答
圖片精選