C 藍橋杯 基礎練習之回形取數

2021-10-03 11:03:45 字數 1560 閱讀 2050

資源限制

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

5 6樣例輸出

1 3 5 6 4 2

思路首先要搞清楚方向下 右 上 左移動的時候要判讀狀態是否需要移動

**方案一:

判斷下乙個狀態是否需要移動,需要注意索引不能越界

#include

#include

#define n 205

using

namespace std;

intmain()

while

(j1&&res[i]

[j+1]!=

0)while

(i>-1

&&res[i-1]

[j]!=

0&&i-

1>=0)

while

(j>-1

&&res[i]

[j-1]!=

0&&j-

1>=0)

}return0;

}

方案二

判斷當前的位置的狀態,進而判斷是否需要移動,還是下右上左,需要注意是否會多走

#include

#include

#define n 205

using

namespace std;

// 下 右 上 左

intmain()

i--; j++

;//移動到最下方的時候,i會多移動一下,所以--,除以以外還要手動控制j++,使得向右移動

while

(j[j]==0)

i--; j--

;while

(i>-1

&&!res[i]

[j])

i++; j--

;while

(j>-1

&&!res[i]

[j])

i++; j++

;// cout<}

return0;

}

藍橋杯 基礎練習 回形取數

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

藍橋杯 基礎練習 回形取數

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

藍橋杯 基礎練習 回形取數

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