首页 > 试题广场 >

拍照队形

[编程题]拍照队形
  • 热度指数:6693 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
猿辅导公司的 N位(N>=4)研发同学组织了一次秋游活动,某同学带了个无人机在高空拍照,活动结束时,先拍了一张所有同学排成公司猴头Logo的照片, 接着有人提议再排成“猿”的首字母Y字形来拍一张合照。

用字符串中的每一个字符(不是换行符或结束符'\0')代表一位老师,输出排好后的队形。要求 Y字除去中心点外,上下半部分等高,按照从左到右,从上到下进行排序。队形中没人的部分用空格占位。
输入数据保证可以排出一个完整的Y字,即长度为 3k+1 (k>=1)

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

// 参考程序
#include <cstring>
#include <iostream>
#include <cstdio>
using namespace std;
char str[1010];
int N;
int main(){
    scanf("%d\n", &N);
    // TODO: 读入字符串,注意可能含空格

    // TODO: 输出拍照队形,没人用空格占位
    printf(" %c\n", str[0]);
}


输入描述:
输入数据有两行,第一行输入N(N<=1000),表示字符串长度。
第二行输入字符串。


输出描述:
用字符串表示的排好的队形,没人处用空格(' ')占位,行尾不能有多余字符,即每行最后一个字符(除了换行符以外),为字符串中代表该老师的字符。
示例1

输入

4
a3f/

输出

a 3
 f
 /
示例2

输入

7
abcdefg

输出

a   b
 c d
  e
  f
  g
示例3

输入

10
iiiiiiiiii

输出

i     i
 i   i
  i i
   i
   i
   i
   i
头像 牛客289281343号
发表于 2020-05-01 16:25:02
解题思路:在我看来,本题的难点不在于打印方式,而在于接收字符串。字符串中的字符可以是空格,因此不能用next()来接收 ,应该用nextLine();另一方面,在接受完整数N时,会在键盘中输入换行符,因此还要注意对于此换行符对于接收字符串的影响,解决办法是在nextInt()后加入一个nextLin 展开全文
头像 牛客题解官
发表于 2020-06-05 15:54:45
题解 题目难度:简单难度 知识点:数学逻辑 分析:主要考虑输出格式,由于N=3k+1,那么前K行每行输出2个字符,后k+1行输出1个字符。对于前k行,第一行:第一列输出字符,空格数为m=2*k-1,在输出第二个字符;第二行:先空格1,输出字符,空格m-=2个(在前一行的基础上减少2个),输出第二个字 展开全文
头像 牛客114903304号
发表于 2023-08-09 15:37:11
import sys n = int(input()) s = str(input()) for i in range(0, n // 3 * 2, 2): print(" " * ( i // 2 ) + s[i] + " " * ( n 展开全文
头像 cchangcs
发表于 2019-08-25 15:55:54
题目描述: 猿辅导公司的 N位(N>=4)研发同学组织了一次秋游活动,某同学带了个无人机在高空拍照,活动结束时,先拍了一张所有同学排成公司猴头Logo的照片, 接着有人提议再排成“猿”的首字母Y字形来拍一张合照。 用字符串中的每一个字符 展开全文