题目:
problem Description
作为一名 lol 老玩家,ljj 听到 FPX 夺冠后激动地不知道如何庆祝,想来想去决定让你打印图形 FPX,用字符 ‘N’ 打印 F ,用 ‘B’ 打印 P ,用 ‘!’ 打印X
Input
一个整数n(n>=5&&n为奇数,n<=31),表示打印图形的行数
Output
打印的图形,具体输出格式见样例
Sample Input
9
Sample Output
NNNNN BBBBB ! !
N B B ! !
N B B ! !
N B B ! !
NNNNN BBBBB !
N B ! !
N B ! !
N B ! !
N B ! !
Hint
F 的宽度为 n/2+1, P 的宽度为n/2+1, X 的宽度为 n
Source
错因:打印x的时候,最后的!后无空格。呜呜,不知道这个梗,一直wa了两天。
#include <bits/stdc++.h>
using namespace std;
char a[100][100];
int main()
{
int n;
cin>>n;
for(int j=1; j<=2*n+3; j++)
{
for(int i=1; i<=n; i++)
{
if(j==1)
a[i][j]='N';
if(j>=2&&j<=n/2+1)
{
if(i==1||i==n/2+1)
a[i][j]='N';
else
a[i][j]=' ';
}
if(j==n/2+2)
a[i][j]=' ';
if(j==n/2+3)
{
a[i][j]='B';
}
if(j>=n/2+4&&j<=n+1)
{
if(i==1||i==n/2+1)
a[i][j]='B';
else
a[i][j]=' ';
}
if(j==n+2)
{
if(i>=1&&i<=n/2+1)
a[i][j]='B';
else
a[i][j]=' ';
}
if(j==n+3)
a[i][j]=' ';
if(j>=n+4&&j<=2*n+3)
{
if(i==j-(n+3))
a[i][j]='!';
else if(i==n+1-(j-n-3))
a[i][j]='!';
else
a[i][j]=' ';
}
}
}
for(int i=1 ; i <=n/2+1; i++)
{
for(int j=1; j <=2*n+3-i+1; j++)
{
**if(j==2*n+3-i+1)//空格问题**
cout<<a[i][j]<< endl;
else
cout<<a[i][j];
}
}
**int top = n / 2 - 1;//空格问题**
for(int i = n/2+2;i <= n;i++){
for(int j=1; j <=2*n+3 - top; j++)
{
if(j==2*n+3-top)
cout<<a[i][j] << endl;
else
cout<<a[i][j];
}
top--;
}
return 0;
}