OR113. 拍照队形
描述
// 参考程序 #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
C 解法, 执行用时: 3ms, 内存消耗: 504KB, 提交时间: 2020-07-16
#include<stdio.h> #include<stdlib.h> char arry[1000]; int N; int num, i, j; int a, b=0, c, k, n, m; int main(){ scanf("%d", &N); getchar(); for(i = 0; i < N; i++){ scanf("%c",&arry[i]); } num = (N - 1) / 3; for(j = 0; j < num; j++){ k = 2 * num - (2 * j + 1); if(j != 0 && num != 1){ for(a = 0; a < j; a++){ printf(" "); } printf("%c", arry[b]); b++; for(n = 0; n < k; n++){ printf(" "); } printf("%c\n", arry[b]); b++; } else if(j == 0){ printf("%c", arry[b]); b++; for(n = 0; n < k;n++){ printf(" "); } printf("%c\n", arry[b]); b++; } } int d = N-2*num; for(m = 0;m < d; m++){ for(c = 0; c < num; c++){ printf(" "); } printf("%c\n", arry[b++]); } return 0; }
C++ 解法, 执行用时: 3ms, 内存消耗: 632KB, 提交时间: 2020-09-07
#include<bits/stdc++.h> using namespace std; int main(){ int n; string str; cin>>n; getchar(); getline(cin,str); int ln=(n-1)/3; string res; int j=0; for(int i=0;i<ln;i++) { res=string(i,' ')+str[j]+string(2*(ln-i)-1,' ')+str[j+1]; cout<<res<<endl; j+=2; } for(int i=0;i<=ln;i++) { res=string(ln,' ')+str[j]; cout<<res<<endl; j++; } return 0; }