【B2083】题解
YclarHIM0302 · · 题解
思路
这道题可以将矩形拆成两份,同时分出空心与实心两种情况解决。
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;
}