藍橋杯基礎練習 回形取數(迴圈)

2021-10-08 06:34:58 字數 1073 閱讀 5266

資源限制

時間限制:1.0s 記憶體限制:512.0mb

問題描述

回形取數就是沿矩陣的邊取數,若當前方向上無數可取或已經取過,則左轉90度。一開始位於矩陣左上角,方向向下。

輸入格式

輸入第一行是兩個不超過200的正整數m, n,表示矩陣的行和列。接下來m行每行n個整數,表示這個矩陣。

輸出格式

輸出只有一行,共mn個數,為輸入矩陣回形取數得到的結果。數之間用乙個空格分隔,行末不要有多餘的空格。

樣例輸入

3 31 2 3

4 5 6

7 8 9

樣例輸出

1 4 7 8 9 6 3 2 5

樣例輸入

3 21 2

3 45 6

樣例輸出

1 3 5 6 4 2

#include

//#include

intmain()

/*for(i=0;ii=

0;j=0;

while

(k<=n*m)

i--; j++;if

(k==m*n)

break

;while

(jj--

; i--;if

(k==m*n)

break

;while

(i>=0)

i++; j--;if

(k==m*n)

break

;while

(j>=0)

j++; i++;if

(k==m*n)

break;}

return0;

}

我這裡用了乙個陣列b來作為判斷陣列,一開始所有的元素設為1,遍歷之後設為0,然後用四個while語句來控制轉向,這裡可以避免每次的轉向的條件不同的問題,每次都正常遍歷到陣列的第m或者n位,如果要遍歷的那個元素在b陣列中的值為0的話,再break出迴圈

這裡第一次的時候有超時的情況,當時少了這句話if(k==m*n) break;,一開始以為這個條件不怎麼重要,但是考慮到陣列非常大時確實很影響速度,還是需要及時break

藍橋杯 基礎練習 回形取數

問題描述 回形取數就是沿矩陣的邊取數,若當前方向上無數可取或已經取過,則左轉90度。一開始位於矩陣左上角,方向向下。輸入格式 輸入第一行是兩個不超過200的正整數m,n,表示矩陣的行和列。接下來m行每行n個整數,表示這個矩陣。輸出格式 輸出只有一行,共mn個數,為輸入矩陣回形取數得到的結果。數之間用...

藍橋杯 基礎練習 回形取數

時間限制 1sec 記憶體限制 128mb 題目描述 回形取數就是沿矩陣的邊取數,若當前方向上無數可取或已經取過,則左轉90度。一開始位於矩陣左上角,方向向下。輸入 輸入第一行是兩個不超過200的正整數m,n,表示矩陣的行和列。接下來m行每行n個整數,表示這個矩陣。輸出 輸出只有一行,共mn個數,為...

藍橋杯 基礎練習 回形取數

問題描述 回形取數就是沿矩陣的邊取數,若當前方向上無數可取或已經取過,則左轉90度。一開始位於矩陣左上角,方向向下。輸入格式 輸入第一行是兩個不超過200的正整數m,n,表示矩陣的行和列。接下來m行每行n個整數,表示這個矩陣。輸出格式 輸出只有一行,共mn個數,為輸入矩陣回形取數得到的結果。數之間用...