图片是转载的(地址):https://blog.csdn.net/u012523688/article/details/20848881
//maxn别开太大,1e5数组好像会崩溃
const int maxn = 1e4 + 5;
char arr[maxn][maxn];
void f(int n)
{
//A区域
int st = 3;
for (int row = 1; row <= 2 * n + 1; row+=2)
{
for (int cal = st; cal <= 2 * (n +1) + 1; cal++)
arr[row][cal] = '$';
st+=2;
}
//B区域
//n+1个拐
int row1 = 1, cal1 = 3, row2 = 3, cal2 = 1;
for (int i = 1; i <= n + 1; i++)
{
for (int i = 0; i <=2; i++)
{
arr[row1 + i][cal1] = '$';
arr[row2][cal2 + i] = '$';
}
row1+=2;
cal1+=2;
row2+=2;
cal2+=2;
}
//C区域
st = 3;
for (int cal = 1; cal <= 2 * n + 1; cal+=2)
{
for (int row = st; row <= 2 * (n + 1) + 1; row++)
arr[row][cal] = '$';
st+=2;
}
//向右复制
//定义个y轴,方便计算
int Y_axis = (2 * (n + 1) + 1);
for (int row = 1; row <= 2 * (n + 1) + 1; row++)
{
for (int cal = 2 * (n + 1) + 1; cal <= 4 * (n +1) + 1; cal++)
{
arr[row][cal] = arr[row][2 * Y_axis - cal];
}
}
//向下复制
int X_axis = (2 * (n + 1) + 1);
for (int row = 2 * (n + 1) + 1; row <= 4 * (n + 1) + 1; row++)
{
for (int cal = 1; cal <= 2 * (n + 1) + 1; cal++)
{
arr[row][cal] = arr[2 * X_axis - row][cal];
}
}
//向右下复制
for (int row = 2 * (n + 1) + 1; row <= 4 * (n + 1) + 1; row++)
{
for (int cal = 2 * (n + 1) + 1; cal <= 4 * (n +1) + 1; cal++)
{
arr[row][cal] = arr[2 * X_axis - row][2 * Y_axis - cal];
}
}
}
int main()
{
ios::sync_with_stdio(false);
int n;
cin >> n;
for (int i = 1; i <= 4 * (n + 1) + 1; i++)
{
for (int j = 1; j <= 4 * (n + 1) + 1; j++)
arr[i][j] = '.';
}
f(n);
for (int i = 1; i <= 4 * (n + 1) + 1; i++)
{
for (int j = 1; j <= 4 * (n + 1) + 1; j++)
cout << arr[i][j];
cout << endl;
}
system("pause");
return 0;
}