棋盘覆盖问题c++源码(分治法)

preview
需积分: 0 7 下载量 165 浏览量 更新于2023-06-27 1 收藏 4KB TXT 举报
对于大小为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);