開啟章節選單

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;
}