【B2083】题解

· · 题解

思路

这道题可以将矩形拆成两份,同时分出空心与实心两种情况解决。

1. 第一行、最后一行

无论是空心还是实心,这种情况下都要输出一整行的c字符 。因此循环输出即可。

for(int j=1;j<=b;j++)
ch[i][j]=c;

2. 第2~(n-1)行

直接循环即可。

for(int j=1;j<=b;j++)
ch[i][j]=c;

只需要在每一行填充第一个与最后一个就行。

ch[i][1]=c;
ch[i][b]=c;

然后补上判定!

(注意 1<=f<=100 可以将0以上的f设为实心 )

代码

#include<bits/stdc++.h>
using namespace std;
int n,m,ans,a,b,f;
char c,ch[105][105]; 
int main()
{
    memset(ch,32,sizeof(ch));
    cin>>a>>b>>c>>f;
    for(int i=1;i<=a;i++)
    {
        if(i==1||i==a)
        {
            for(int j=1;j<=b;j++)
            ch[i][j]=c;
        }
        if(i!=a&&i!=1)
        {
            if(f>=1)
            {
                for(int j=1;j<=b;j++)
                ch[i][j]=c;
            }
            else
            {
                ch[i][1]=c;
                ch[i][b]=c;
            }
        }
    }
    for(int i=1;i<=a;i++)
    {
        for(int j=1;j<=b;j++)
        cout<<ch[i][j];
        cout<<endl;
    }
    return 0;
}

AC!