2018年3月9日 星期五

[C_AR189-易] 用弓字的方式列印陣列(C++)

[C_AR189-易] 用弓字的方式列印陣列

Time Limit: 1 seconds
問題描述 :
給一個 m*n 的二維陣列,請用弓字的方式展示這個陣列的內容。
舉例而言,底下是一個 4*2 的陣列:
1
陣列的左上角是起點(即 (0, 0) 之處),你要用下圖的方式走訪陣列,把所有的內容印出來。其中藍色的箭號是走訪的方向。所以你要印出 1 2 4 3 5 6 8 7 。
2
輸入說明 :
輸入的第 1 行為 2 個正整數,用空白隔開,代表了陣列的 row (以 )表示,及 column 數(以 表示)。
接下來有 行,每一行包含了 個正整數,這些正整數都以空白隔開。
輸出說明 :
以弓字走訪整個陣列,每遇到一個元素就將之印出來,元素間用空白隔開,最後一個元素的後面不用加空白,但要加一個換行字元。
所有的資料都秀在同一行。
範例 :

輸入範例輸出範例
4 2
1 2
3 4
5 6
7 8
1 2 4 3 5 6 8 7
  1. #include <iostream>  
  2. #include <vector>  
  3. using namespace std;  
  4.   
  5. int main() {  
  6.     // [C_AR189-易] 用弓字的方式列印陣列  
  7.     int m, n;  
  8.     cin >> m >> n;  
  9.     int input[m][n];  
  10.     vector<int> ans;  
  11.     for(int i = 0;i < m;i++)  
  12.     {  
  13.         for(int j = 0;j < n;j++)  
  14.         {  
  15.             cin >> input[i][j];  
  16.         }  
  17.     }  
  18.       
  19.     for(int i = 0;i < m;i++)  
  20.     {  
  21.         if(i % 2 == 0)  
  22.         {  
  23.             for(int j = 0;j < n;j++)  
  24.             {  
  25.                 ans.push_back(input[i][j]);  
  26.             }  
  27.         }  
  28.         else  
  29.         {  
  30.             for(int j = n-1;j >= 0;j--)  
  31.             {  
  32.                 ans.push_back(input[i][j]);  
  33.             }  
  34.         }  
  35.     }  
  36.     for(int i = 0;i < ans.size();i++)  
  37.     {  
  38.         if(i == 0)  
  39.             cout << ans[i];  
  40.         else  
  41.             cout << " " << ans[i];  
  42.     }  
  43.     cout << endl;  
  44.     return 0;  
  45. }  

沒有留言:

張貼留言