一、题目大意
二、解题思路一
算出中心坐标,算出当前位置和中心的横纵坐标差值最大值,最大值为偶数,则该位置为内字符,否则为外字符。边角另考虑。注意n==1不能消除边角
#include<iostream>
using namespace std;
int abs(int x)
{
if(x < 0)
return -x;
return x;
}
int n, c;
char in, out;
int main()
{
int flag = 0;
while(cin >> n >> in >> out)
{
if(flag)
cout << endl;
flag = 1;
c = n / 2;
if(n == 1)
{
cout << in << endl;
continue;
}
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
if(i==0&&j == 0 || i==0&&j ==n-1 || i==n-1&&j==0 || i==n-1&&j==n-1)
cout << " ";
else
{
int x = abs(i - c);
int y = abs(j - c);
int temp = max(x, y);
if(temp % 2 == 0)
cout << in;
else
cout << out;
}
if(j == n-1)
cout << endl;
}
}
}
return 0;
}
三、解题思路二
从内到外按圈填表,每次计算出每一圈的左上角的坐标,以此为基准填字符