牛客刷题之拍照队形

题目描述

猿辅导公司的 N位(N>=4)研发同学组织了一次秋游活动,某同学带了个无人机在高空拍照,活动结束时,先拍了一张所有同学排成公司猴头Logo的照片, 接着有人提议再排成“猿”的首字母Y字形来拍一张合照。

用字符串中的每一个字符(不是换行符或结束符'\0')代表一位老师,输出排好后的队形。要求 Y字除去中心点外,上下半部分等高,按照从左到右,从上到下进行排序。队形中没人的部分用空格占位。

输入数据保证可以排出一个完整的Y字,即长度为 3k+1 (k>=1)

例如: 7个 x ,排成队形为(为了方便说明,这里用‘-’代替空格):

x---x

-x-x

--x

--x

--x

牛客链接:https://www.nowcoder.com/practice/1b1f87ef6e7d40529d82c96aef79e8a4?tpId=182&&tqId=34839&rp=1&ru=/ta/exam-all&qru=/ta/exam-all/question-ranking

 

注意事项:

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值