对于大小为NxN的棋盘,使用L形积木填充。具体地,输入N后,程序使用分治法不断划分,划分到最小单位时,再进行填充。
1、实验环境
vs2019
2、实验题目
棋盘覆盖
3、问题分析、数学建模、算法设计
(一)不断将棋盘围绕中心划分为等分的四份,每次等分前根据特殊块的位置放置一个积木,直到棋盘的长度足够小(n=2)时,不再划分,进行填充。
(二)①若n=2,结束划分 ②若n>2,继续划分
(三)不使用全局变量,将信息作为参数进行传递。主要的参数有当前棋盘起点坐标(ax,ay),特殊点坐标(bx,by),棋盘长度n,二维棋盘board,以及当前以及使用的符号数cnt,
设计函数trio,将n=2作为递归出口,若n不等于2,则依据特殊点位置放置一个积木,再将棋盘四等分,继续递归。
·复杂度分析:
①时间复杂度:O(n*n);
②空间复杂度:O(n*n);