题目描述
猿辅导公司的 N位(N>=4)研发同学组织了一次秋游活动,某同学带了个无人机在高空拍照,活动结束时,先拍了一张所有同学排成公司猴头Logo的照片, 接着有人提议再排成“猿”的首字母Y字形来拍一张合照。
用字符串中的每一个字符(不是换行符或结束符'\0')代表一位老师,输出排好后的队形。要求 Y字除去中心点外,上下半部分等高,按照从左到右,从上到下进行排序。队形中没人的部分用空格占位。
输入数据保证可以排出一个完整的Y字,即长度为 3k+1 (k>=1)
例如: 7个 x ,排成队形为(为了方便说明,这里用‘-’代替空格):
x---x
-x-x
--x
--x
--x
注意事项:
用C++编程时,在该题目中有一个注意点,由于输入字符中有空格,不能用cin直接接收输入字符。
需要用getline(cin,str)来接收
在接收前需使用getchar()吸收掉换行符
代码
#include <string>
#include <iostream>
#include <cstdio>
using namespace std;
int N;
int main(){
cin>>N;
string str;
getchar();
getline(cin,str);
int rowNum = (N-1)/3;
int num=0;
int row = 0;
for (row=0; row<rowNum; row++){
for(int j=0; j<row; j++){
cout << " ";
}
cout << str[num];
num++;
for(int k=0; k<(rowNum-row)*2-1; k++) {
cout << " ";
}
cout << str[num]<<"\n";
num++;
}
for(int k=row; k<rowNum*2+1; k++) {
for(int j=0; j<row; j++){
cout << " ";
}
cout << str[num]<<"\n";
num++;
}
}