題目 1465: [藍橋杯][基礎練習vip]回形取數
時間限制: 1sec 記憶體限制: 128mb
題目描述
回形取數就是沿矩陣的邊取數,若當前方向上無數可取或已經取過,則左轉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
個人做題心得:
這是一道看似很簡單,實則還行,操作下飯,debug難受的題目。
題目解析:
這道題目和之前記錄的蘭頓螞蟻有些許相似之處,這樣的乙個回形取數就像蛇形取數一樣。
講講自己的思路:
做題的幾個點:
#include
using
namespace std;
int m,n;
int a[
205]
[205];
int visit[
205]
[205]=
;//訪問陣列
int num;
int x=
0,y=0;
char s=
'd';
void
turn1()
// 向左轉
}voidgo(
)//朝著當前頭朝向前行1
}void
back()
//回退函式,用於返回上乙個點,這裡要注意xy的變化是根據轉向前的情況來的
}void
circle()
go();
if(visit[x]
[y]!=0)
//如果已經標記就轉向
elseif(
(x>m-
1||x<0)
||(y>n-
1||y<0)
)//越界就轉向
else
continue;}
}int
main()
}circle()
;}
這題目debug弄了好久,思想不難。
建議:
先把思路弄透徹了再考慮改**,不然一會乙個主意一會兒乙個主意的改**,真的極費時間。
藍橋杯 回形取數
題目 回形取數就是沿矩陣的邊取數,若當前方向上無數可取或已經取過,則左轉90度。一開始位於矩陣左上角,方向向下。輸入格式 輸入第一行是兩個不超過200的正整數m,n,表示矩陣的行和列。接下來m行每行n個整數,表示這個矩陣。輸出格式 輸出只有一行,共mn個數,為輸入矩陣回形取數得到的結果。數之間用乙個...
藍橋杯 回形取數
基礎練習 回形取數 時間限制 1.0s 記憶體限制 512.0mb 問題描述 回形取數就是沿矩陣的邊取數,若當前方向上無數可取或已經取過,則左轉90度。一開始位於矩陣左上角,方向向下。輸入格式 輸入第一行是兩個不超過200的正整數m,n,表示矩陣的行和列。接下來m行每行n個整數,表示這個矩陣。輸出格...
藍橋杯 回形取數
問題描述 回形取數就是沿矩陣的邊取數,若當前方向上無數可取或已經取過,則左轉90度。一開始位於矩陣左上角,方向向下。輸入格式 輸入第一行是兩個不超過200的正整數m,n,表示矩陣的行和列。接下來m行每行n個整數,表示這個矩陣。輸出格式 輸出只有一行,共mn個數,為輸入矩陣回形取數得到的結果。數之間用...