棋盘覆盖问题(分治法)

news2025/1/13 17:30:16

在这里插入图片描述
裁判测试程序样例:

#include <iostream>
#include<fstream>
#include <iomanip>
#define MAX 1025
using namespace std;
int board[MAX][MAX];
int tile=1;

void ChessBoard(int tr,int tc,int dr,int dc,int size);

int main()
{
int dr,dc,size;
int j,i;
cin>>size;
cin>>dr>>dc;
ChessBoard(0,0,dr,dc,size);
for(i=0;i<size;i++){
  cout<<left; 
  for(j=0;j<size;j++)
  {
    cout<<setfill(' ')<<setw(5)<<board[i][j];
  }
  cout<<endl;
}
return 0;
} 

/* 请在这里填写答案 */

输入样例:

第一行输入一个数n表示棋盘大小,第二行输入特殊方格的行列下标。

8
1 2

输出样例:

输出棋盘。

3 3 4 4 8 8 9 9
3 2 0 4 8 7 7 9
5 2 2 6 10 10 7 11
5 5 6 6 1 10 11 11
13 13 14 1 1 18 19 19
13 12 14 14 18 18 17 19
15 12 12 16 20 17 17 21
15 15 16 16 20 20 21 21

idea

  • 问题描述
    在这里插入图片描述
    所谓棋盘覆盖问题,可以理解为正方形划分为若干个小正方形,其中一个被标记,需找出用不同角度的L型骨牌覆盖的方案。覆盖过程中需要满足覆盖除特殊方格外的所有方格,不能重叠

  • 问题有解性证明
    在这里插入图片描述

  • 分治法求解
    在这里插入图片描述

solution

void ChessBoard(int tr,int tc,int dr,int dc,int size){   
	if(size == 1) return;        //递归出口
    int t=tile++;            //取一个L型骨,其牌号为tile
    int s=size/2;            //分割棋盘
    //考虑左上角象限
    if(dr < tr + s && dc < tc + s)        //特殊方格在此象限中
		ChessBoard(tr, tc, dr, dc, s);
    else                //此象限中无特殊方格
    {    
		board[tr + s - 1][tc + s - 1] = t;    //用t号L型骨牌覆盖右下角
		ChessBoard(tr, tc, tr + s - 1, tc + s - 1, s);    //将右下角作为特殊方格继续处理该象限
    }
    //考虑右上角象限
    if(dr < tr + s && dc >= tc + s)         
		ChessBoard(tr, tc + s, dr, dc, s);        //特殊方格在此象限中 
    else                    //此象限中无特殊方格
    {    
		board[tr + s - 1] [tc + s] = t;        //用t号L型骨牌覆盖左下角
		ChessBoard(tr, tc + s, tr + s - 1, tc + s, s)
;  //将左下角作为特殊方格继续处理该象限
    }
   //处理左下角象限
    if(dr >= tr + s && dc < tc + s)        //特殊方格在此象限中
		ChessBoard(tr + s, tc, dr, dc, s);  
    else                //此象限中无特殊方格
    {   
		board[tr + s][tc + s - 1] = t;      //用t号L型骨牌覆盖右上角
        ChessBoard(tr + s, tc, tr + s, tc + s - 1, s);    //将右上角作为特殊方格继续处理该象限
    }
    //处理右下角象限
    if(dr >= tr + s && dc >= tc + s)        //特殊方格在此象限中
        ChessBoard(tr + s, tc + s, dr, dc, s); 
    else                //此象限中无特殊方格
    {    
		board[tr + s][tc + s] = t;      //用t号L型骨牌覆盖左上角
 		ChessBoard(tr + s, tc + s, tr + s, tc + s, s);      //将左上角作为特殊方格继续处理该象限
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1104957.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GeoServer改造Springboot启动三(集成jdbcconfig和jdbcstore)

1、集成jdbc插件 1.1 由于GeoServer所有数据都在数据目录下,如果需要将数据存储数据库,这需要引入如图 13所示的两个插件。 图 13jdbc插件位置 1.2 右键两个插件的“pom.xml”,选择“Add as Maven Project”,模块就会加入maven关联。 图 14jdbc右键“Add as Maven Proje…

python代码调用文件或数据库中保存的脚本

这里采用的读取excel 1、先写一个测试方法 def demo5():import xlrdimport randomwb xlrd.open_workbook("code.xls")st wb.sheet_by_index(0)code st.cell_value(0, 0)list ["6666", asd, 1ad23, 1f23, 12g3, 1b3, 12r3]code2 st.cell_value(0, 1)…

Mendix 创客访谈录|用移动审批和三维可视化打造客户满意的高逻辑应用

本期创客 朱成 能科瑞元数字技术有限公司 Mendix业务部 朱成任职于能科瑞元数字技术有限公司Mendix业务部&#xff0c;主要负责工业互联网软件开发实施。本人主要负责Mendix Teamcenter集成开发、Mendix应用实施部署以及低代码平台技术支持。作为Mendix实施开发工程师参与了中…

iOS 借助定位实现“保活”策略

疑惑 你是否有过类似的体验,当你刚刚来到一个商业区,命名没打开任何APP,手机就会收到push给你推荐周围的“吃喝玩乐”,那他们又是怎么做到的呢? ##解密 其实,我们可以通过监听当位置变化,在用户无感知的情况下在后台悄悄拉齐我们的进行来处理特定的逻辑。 不是感觉很…

智能合同和TikTok:揭示加密技术的前景

在当今数字化时代&#xff0c;智能合同和加密技术都成为了技术和商业世界中的热门话题。它们代表了一个崭新的未来&#xff0c;有着潜在的巨大影响。 然而&#xff0c;你或许从未想过将这两者联系在一起&#xff0c;直到今天。本文将探讨智能合同和TikTok之间的联系&#xff0…

maven构建jar包运行后出现中文乱码问题解决

问题描述&#xff1a; 最近在接手一个坑时&#xff0c;发现本地打出来的jar包&#xff0c;到环境中运行之后总是出现中文乱码问题&#xff0c;但又不是全部中文乱码。经过排查发现&#xff0c;只有写在代码里的中文返回到前端之后出现了乱码。再通过解压打出来的jar包&#xff…

使用目标之间的先验关系提升目标检测器性能

今天跟大家分享阿姆斯特丹大学等提出的用于提升目标检测和实例分割性能的新方法RP-FEM&#xff0c;该方法将目标之间位置的先验关系融入到feature中。 论文标题&#xff1a;Relational Prior Knowledge Graphs for Detection and Instance Segmentation机构&#xff1a;阿姆斯特…

统计学习方法 EM 算法

文章目录 统计学习方法 EM 算法引入EM 算法EM 算法的导出EM 算法的收敛性三硬币模型 统计学习方法 EM 算法 学习李航《统计学习方法》时关于 EM 算法的笔记 引入 概率模型中有时候同时包含观测变量&#xff08;observable variable&#xff09;和隐变量&#xff08;潜在变量…

Spring Boot项目中使用 TrueLicense 生成和验证License(附源码)

1、Linux 在客户linux上新建layman目录&#xff0c;导入license.sh文件&#xff0c; [rootlocalhost layman]# mkdir -p /laymanlicense.sh文件内容&#xff1a; #!/bin/bash # 1.获取要监控的本地服务器IP地址 IPifconfig | grep inet | grep -vE inet6|127.0.0.1 | awk {p…

人脸写真FaceChain的简单部署记录(一)

由【让你拥有专属且万能的AI摄影师AI修图师——FaceChain迎来最大版本更新】这篇文章开始出发进行人脸写真的尝试&#xff0c;笔者之前modelscope申请过免费额度&#xff0c;这里有适配的GPU环境可以提供测试。 但是很难抢到GPU资源&#xff0c;需要等待很久&#xff0c;可能才…

路由侠内网穿透:轻松访问公司内部OA、ERP等系统,提高工作效率

前言: 本文介绍如何通过路由侠内网穿透&#xff0c;从外部网络环境&#xff08;比如异地和家中网络&#xff09;访问公司内网的 OA、ERP 等系统。 公司内网的 OA、ERP 以及其他类型的办公系统&#xff0c; 通常有两种形态&#xff0c;一种是网站形态&#xff0c;一种是单独的应…

开源IT资产管理系统Snipe-IT

本文完成于 8 月初&#xff0c;正好网友 chenlit 在找用于管理固定资产容器和套件&#xff0c;不知道 Snipe-IT 是否能满足他的需求&#xff1b; 什么是 Snipe-IT &#xff1f; Snipe-IT 是一个用 PHP 编写的免费开源 IT 资产管理系统。Snipe-IT 专为 IT 资产管理而设计&#x…

Spring后置处理器之AutowiredAnnotationBeanPostProcessor

抽象类InstantiationAwareBeanPostProcessorAdapter没有实现的接口方法&#xff0c;其子类必须实现。 抽象类InstantiationAwareBeanPostProcessorAdapter可以使得类InstantiationAwareBeanPostProcessorAdapter选择性实现接口部分抽象方法。

新年学新语言Go之二

一、前言 上文 新年学新语言Go之一讲了Go的牛逼之处&#xff0c;给自己找一个学习的理由&#xff0c;但是学任何一门语言基础语法还是要先掌握&#xff0c;虽然这是一件很枯燥的事。 二、环境搭建与HelloWorld 1、配置环境 从https://golang.google.cn/dl/下载Mac环境Go最新…

干洗店小程序,上门洗鞋洗衣下单算软件开发;

干洗店小程序&#xff0c;上门洗鞋洗衣软件&#xff1b; 有多个小程序开发案例 洗衣店小程序 是一款适用于洗衣店、干洗店等洗鞋店小程序&#xff1b; 干洗店小程序功能有: 1.(支持上门取送、送货到店、寄存网点、智能衣柜四种下单方式) 用户下单-上门取货拍照-送达门店工厂-入…

页面的动静分离

动静分离概念: 访问静态()和动态页面(tomcat)分开静态页面&#xff0c;由nginx提供服务&#xff0c;静态页面由tomcat提供服务。实现动态和静态页面负载均衡。 实验需求&#xff1a; 1台nginx代理 192.168.10.10 四层代理 2台nginx 提供静态页面 192.168.10.2…

四维轻云主要功能介绍

《四维轻云》是一款轻量化的地理空间数据管理云平台&#xff0c;支持地理空间数据的在线管理、编辑以及分享。平台有项目管理、数据上传、场景搭建、发布分享、素材库等功能模块&#xff0c;支持多用户在线协作管理&#xff0c;实现了轻量化、便捷化的空间数据应用。 一、发布…

详解使用sklearn实现一元线性回归和多元线性回归

[Open In Colab] 文章目录 1. 线性回归简介2. 使用sklearn进行一元线性回归3. 线性回归的coef_参数和intercept_参数4. 使用sklearn实现多元线性回归4.1 利用PolynomialFeatures构造输入4.2 进行多元线性回归 5. 总结 import numpy as np import matplotlib.pyplot as plt1. 线…

基于SSM的洗衣店管理系统

基于SSM的洗衣店管理系统的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringSpringMVCMyBatis工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 主页 管理员界面 预约列表 种类管理 用户界面 摘要 洗衣店管理系统是一种利用现代技…

java 通过Tess4j 读取图片中的文字

Maven依赖导入Tess4j <!-- https://mvnrepository.com/artifact/net.sourceforge.tess4j/tess4j --><dependency><groupId>net.sourceforge.tess4j</groupId><artifactId>tess4j</artifactId><version>4.5.4</version></de…