開啟章節選單
490 Rotating Sentences
題目連結
題目敘述
在「旋轉句子(Rotating Sentences)」這題中,你需要將一系列輸入的句子順時針旋轉 90 度。
也就是說,原本從左到右、從上到下輸出的句子,會改成從上到下、從右到左顯示。
輸入說明
你的程式將會接收到最多 100 句輸入句子,每一句最長不超過 100 個字元。
合法的字元包含:換行符號、空格、所有標點符號、數字,以及英文大小寫字母。
(注意:Tab(跳位符)不是合法字元。)
輸出說明
程式的輸出應該是:最後一個句子垂直列印在最左邊的欄位;
而第一個輸入的句子則會出現在最右邊的欄位。
解題思路
先將所有句子都輸入紀錄,並記錄下最長的一個句子長度。
接著透過迴圈將每個句子和最長的句子的長度進行比較,並將短的句子補齊空白。
最後透過迴圈有下到上,左到右列印出結果。
程式碼
#include <bits/stdc++.h> using namespace std; int main() { vector<string> sentences; string input; int max_length = -1, cnt_sentences = 0, input_length; while (getline(cin, input)) { sentences.push_back(input); input_length = input.length(); max_length = max(max_length, input_length); cnt_sentences++; } for (int j = 0; j < cnt_sentences; j++) { while (max_length > sentences[j].length()) { sentences[j] += ' '; } } for (int i = 0; i < max_length; i++) { for (int j = cnt_sentences - 1; j >= 0; j--) { cout << sentences[j][i]; } cout << '\n'; } return 0; }