解题思路:
对角线隔行展开,其余的按照规律填充
注意事项:

参考代码:

#include<iostream>

using  namespace std;


int main()

{

char arr[125][125]; //存放最大化的数据

for(int i=0;i<125;++i)

for (int j = 0; j < 125; ++j)

{

arr[i][j] = '.';

}

int number;

cin >> number;

for (int i = 0; i <125; ++i) { 

for (int j = 0; j < 125; ++j)

{

if (i == j && i % 2 == 0) {

arr[i][j] = '$';                                                        //两条对角线

arr[i][124 - j] = '$';

if (i >= 2&&i<=125/2)                                     /*将图形分为四个部分:左上、左下、右上、右下

                                                                            四个部分分别四个方向扩展两个*/

{

arr[i - 2][j] = '$';

arr[i - 1][j] = '$';

arr[i - 1][124 - j] = '$';

arr[i - 2][124 - j] = '$';

}

if (i >= 125 / 2&&i<123) 

{

arr[i + 2][j] = '$';

arr[i + 1][j] = '$';

arr[i + 1][124 - j] = '$';

arr[i + 2][124 - j] = '$';

}

if(j>=2&&i<=125/2)

{

arr[i][j-1] = '$';

arr[i][j-2] = '$';

arr[i][124-j+1] = '$';

arr[i][124-j+2] = '$';

}

if (i >= 125/2&& j<123) 

{

arr[i][j+2] = '$';

arr[i][j+1] = '$';

arr[i][124 - j-2] = '$';

arr[i][124 - j-1] = '$';

}

}

}

}

for (int i = 0; i < 125; i = i + 2)

{

for (int j = i+2; j < 124 - (i+2); ++j)

{

arr[i][j] = '$';

arr[124 - i][124 - j]='$';

arr[j][i] = '$';

arr[124 - j][124 - i] = '$';

}

}

int m = 61 - number * 2-1;                                                            //中心坐标(63,63)

int n = 65 + number * 2-1;                                                            //十字左边61-65的正方形

arr[m][m] = arr[n][n] = arr[n][m] = arr[m][n] = '.';                        //四个角的修改

for (int i = m; i <=n; ++i) {

for (int j=m;j <=n; ++j)

{

cout << arr[i][j];

}

cout << endl;

}

return 0;

}


点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论