叠筐
解:
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
char matrix[80][80];
int n;
char a,b;
bool firstCase =true; //如果是第一个叠框,前面不用加空格
while(cin>>n>>a>>b)
{
if(firstCase)
{
firstCase=false;
}
else{
cout <<endl;
}
for (int i=0;i<=n/2;i++) //对应每个边框,左上角为(i,i)
{
int j=n-i-1; //右下角为(j,j)
int length =n-2*i; //边框的长度
char c; //每个边框对应的字符
if ((n/2-i)%2==0) //若距离中心为偶数则为a,例如中心处结果为0则为a
{
c=a;
}
else
{
c=b;
}
for(int k=0;k<length;k++) //开始为每个边框填入花色
{
matrix[i][i+k]=c; //上
matrix[i+k][i]=c; //左
matrix[j][j-k]=c; //下
matrix[j-k][j]=c; //右
}
}
if(n>1)
{
matrix[0][0]=' '; //把四个角都置为空
matrix[0][n-1]=' ';
matrix[n-1][0]=' ';
matrix[n-1][n-1]=' ';
}
for(int i=0;i<n;++i)
{
for (int j=0;j<n;j++)
{
cout <<matrix[i][j];
}
cout <<endl;
}
}
}