蓝桥杯:回形取数
題目:
回形取數就是沿矩陣的邊取數,若當前方向上無數可取或已經取過,則左轉90度。一開始位于矩陣左上角,方向向下。
輸入格式
輸入第一行是兩個不超過200的正整數m, n,表示矩陣的行和列。接下來m行每行n個整數,表示這個矩陣。
輸出格式
輸出只有一行,共mn個數,為輸入矩陣回形取數得到的結果。數之間用一個空格分隔,行末不要有多余的空格。
樣例輸入
3 3
1 2 3
4 5 6
7 8 9
樣例輸出
1 4 7 8 9 6 3 2 5
樣例輸入
3 2
1 2
3 4
5 6
樣例輸出
1 3 5 6 4 2
分析:
1.走的路線是下右上左
2.如果已經走過了,那么久設個標記,下次再遇到就換方向.
代碼:
#include<iostream> #include<cstring>using namespace std;int main(){int m,n;cin>>m>>n;int a[m][n];int i,j;for(i=0;i<m;i++){for(j=0;j<n;j++){cin>>a[i][j];}}int sum=m*n;i=-1;j=0;while(sum){//向下走while(a[++i][j]!=-1 && i<m){cout<<a[i][j]<<" ";a[i][j]=-1;sum--;}i--;//向右走while(a[i][++j]!=-1 && j<n){cout<<a[i][j]<<" ";a[i][j]=-1;sum--;}j--;//向上走while(a[--i][j]!=-1 && i>=0){cout<<a[i][j]<<" ";a[i][j]=-1;sum--;}i++;//向左走while(a[i][--j]!=-1 && j>=0){cout<<a[i][j]<<" ";a[i][j]=-1;sum--;}j++;}return 0; }總結
- 上一篇: 网康防火墙--上线指南_在线付款接受指南
- 下一篇: 广工大物实验