题目描述题目要求将多行句子顺时针旋转909090度后输出。即原来的第一行变为最右边的一列原来的最后一行变为最左边的一列。输出时每行对应原输入的一列从上到下行末不包含多余空格。输入格式输入包含最多100100100行每行不超过100100100个字符。输入以文件结束符EOF\texttt{EOF}EOF终止。字符包括空格、标点、字母等制表符不合法。输出格式输出旋转后的图形每一行对应原输入的一列从最后一行的第一个字符到第一行的第一个字符行末无多余空格。样例输入Rene Decartes once said, I think, therefore I am.输出R Ie n te h id ne kc ,a r tt he e sr e fo n oc re e s Ia i ad m, .题目分析本题的核心是将输入文本矩阵顺时针旋转909090度。设输入有RRR行最大行长为CCC则输出应有CCC行每行RRR个字符。输出第iii行000索引对应原矩阵的第iii列但按从下到上的顺序即输出第iii行第jjj个字符对应原矩阵第(R−1−j)(R-1-j)(R−1−j)行第iii列。算法步骤读取所有输入行记录最大长度maxLenmaxLenmaxLen。对于iii从000到maxLen−1maxLen-1maxLen−1对于jjj从R−1R-1R−1到000若isentences[j].length()i sentences[j].length()isentences[j].length()则输出sentences[j][i]sentences[j][i]sentences[j][i]。否则输出空格。输出换行。注意点输出行末不应有多余空格但上述循环中若某列后面全是空格则这些空格应输出因为旋转后它们位于行内。实际上题目要求输出空格作为空白位置但行末空格通常不要求保留。参考代码未做特殊处理直接输出所有列包括末尾空格。输入中可能包含制表符需要过滤或处理。复杂度分析时间复杂度O(R×C)O(R \times C)O(R×C)R≤100R \le 100R≤100C≤100C \le 100C≤100完全可接受。代码实现// Rotating Sentences// UVa ID: 490// Verdict: Accepted// Submission Date: 2016-07-13// UVa Run Time: 0.000s//// 版权所有C2016邱秋。metaphysis # yeah dot net#includebits/stdc.husingnamespacestd;intmain(intargc,char*argv[]){ios::sync_with_stdio(false);intmax_length0;vectorstringsentences;string line;while(getline(cin,line)){for(intiline.length()-1;i0;i--)if(line[i]\t)line.erase(line.begin()i);max_lengthmax(max_length,(int)line.length());sentences.push_back(line);}for(inti0;imax_length;i){for(intjsentences.size()-1;j0;j--)if(isentences[j].length())coutsentences[j][i];elsecout ;coutendl;}return0;}