FPX NB!(打印图形-细节-空格问题)

题目:
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;
}
发布了90 篇原创文章 · 获赞 18 · 访问量 3362

猜你喜欢

转载自blog.csdn.net/sherry_zhen/article/details/103264857