回形取數 藍橋杯

2021-10-02 10:39:41 字數 1726 閱讀 2911

基礎練習 回形取數

時間限制: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

ac**,起初想法(這個有點麻煩,可以看下面那個思路)

#include

#include

#include

#include

#include

#include

using

namespace std;

int a[

200]

[200];

int flag[

200]

[200];

//是否訪問過

intmain()

if(flag[i]

[j]||i==aa)

break;}

//此時的i和j剛好符合要求 (左下角)

aa--

;//cout<<"i==")if

(flag[i]

[j]||j==bb)

break;}

//此時的i和j剛好符合要求(右下角)

bb--

;while(1

)if(flag[i]

[j]||i==cc)

break;}

//此時的i和j剛好符合要求(右上角)

cc++

;while(1

)//cout<<"j=="(flag[i]

[j]||j==dd)

break;}

dd++

;//cout<<"count=="(count==m*n)

break;}

return0;

}

ac**(精簡的):

#include

#include

#include

#include

#include

#include

using

namespace std;

int a[

200]

[200];

int flag[

200]

[200];

//是否訪問過

intmain()

while

(j+1

<=n-1&&

!flag[i]

[j+1])

while

(i-1

>=0&&

!flag[i-1]

[j])

while

(j-1

>=0&&

!flag[i]

[j-1])

}return0;

}

藍橋杯 回形取數

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

藍橋杯 回形取數

基礎練習 回形取數 時間限制 1.0s 記憶體限制 512.0mb 問題描述 回形取數就是沿矩陣的邊取數,若當前方向上無數可取或已經取過,則左轉90度。一開始位於矩陣左上角,方向向下。輸入格式 輸入第一行是兩個不超過200的正整數m,n,表示矩陣的行和列。接下來m行每行n個整數,表示這個矩陣。輸出格...

藍橋杯 回形取數

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