王晓东老师《计算机算法设计与分析》棋盘覆盖问题完整程序

电力系统实时仿真技术:从硬件在环到主流平台实践 实时仿真是一种基于高性能计算硬件,在严格时间约束下模拟物理系统动态行为的关键技术。其核心原理在于通过硬实时计算,确保仿真步长内的模型求解与输出时间严格同步,从而构建高保真的虚拟测试环境。这项技术的核心价值在于为电力电子、新能源并网等复杂系统的研发提供了无风险的“数字沙盘”,能够安全地验证控制器逻辑、保护装置动作及系统稳定性。在工程实践中,硬件在环测试通过连接虚拟模型与真实硬件,形成了控制器硬件在环和功率硬件在环两大主流应用场景,广泛应用于设备研发、电网安全分析和人员培训。本文聚焦于电力系统领域,深入解析了实 阅读详情

说明:下面的程序对应于王晓东老师《计算机算法设计与分析(第4版)》的棋盘覆盖问题。

其中chessBoard函数来自于王晓东老师的著作,本人编写了display函数和main函数。

#include <stdio.h>
int board[8][8];
int tile;
void chessBoard(int tr, int tc, int dr, int dc, int size)
{
      if (size == 1) return;
      int t = tile++,  // L型骨牌号
        s = size/2;  // 分割棋盘
      // 覆盖左上角子棋盘
      if (dr < tr + s && dc < tc + s)
         // 特殊方格在此棋盘中
         chessBoard(tr, tc, dr, dc, s);
      else {// 此棋盘中无特殊方格
         // 用 t 号L型骨牌覆盖右下角
         board[tr + s - 1][tc + s - 1] = t;
         // 覆盖其余方格
         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 {// 此棋盘中无特殊方格
         // 用 t 号L型骨牌覆盖左下角     
        board[tr + s - 1][tc + s] = t;
         // 覆盖其余方格
         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 {// 用 t 号L型骨牌覆盖右上角
         board[tr + s][tc + s - 1] = t;
         // 覆盖其余方格
         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 {// 用 t 号L型骨牌覆盖左上角
         board[tr + s][tc + s] = t;
         // 覆盖其余方格
         chessBoard(tr+s, tc+s, tr+s, tc+s, s);}
}

void display()
{
	int r,c;
	for(r=0;r<8;r++)
	{
		for(c=0;c<8;c++)
			printf("%2d ",board[r][c]);
		printf("\n");
	}
}

int main()
{
	tile=1;
	chessBoard(0,0,2,2,8);
	display();
	return 0;
}

程序的运行结果截图:


Istio ICA考试之路---2-2 找到dr部分,这部分可以在mirroring里找也可以和题2-1一样在Traffic Management的dr里复制,内容都一样。此题之后都是在cluster-2上操作,所以就不需要再切换了.之后的几题2.1节就忽略掉了。可以看到,80%的流量被镜像到了dev上,实际考试这步可以忽略。看到ex-ip是192.168.126.220。获取gw,把gateways加入到vs配置中。获取istio-ingress的ex-ip。就获得了这样一个模板文件。查看2个pod的日志。 阅读详情

相关推荐

如何使用3D高斯分布进行环境建模

使用3D高斯分布来进行建模,关键在于通过引入不确定性描述来提高建图的鲁棒性和精度。与传统点云表示相比,3D高斯分布提供了一种更为灵活和有效的方式来处理空间数据,能够通过协方差矩阵表示点的空间不确定性,帮助优化SLAM过程中的定位和地图更新。

JaydenQ的博客 2355

棋盘覆盖问题+代码

主要介绍棋盘覆盖问题的原理及解法,其本质上是一种分治思想

m0_62165705的博客 868

基于多智能体架构的AI自动化渗透测试平台PentAGI部署与实战

自动化渗透测试是网络安全领域提升效率、应对复杂威胁的关键技术。其核心原理在于通过程序化脚本或智能系统模拟攻击者行为,对目标系统进行安全评估。该技术能显著降低人工重复劳动,实现7x24小时持续监控与测试,其价值在于将安全专家从繁琐的扫描、信息收集中解放出来,专注于高级威胁分析与策略制定。在实际应用中,自动化渗透测试广泛应用于企业安全自评估、红蓝对抗演练及DevSecOps流程。本文聚焦于一个名为PentAGI的先进平台,它采用多智能体(Multi-Agent)系统架构,集成了知识图谱和向量数据库,实现了从侦察

weixin_30294295的博客 605

棋盘覆盖算法代码

 #include #include using namespace std; static int tile=1; static int board[16][16]={0}; chess_board(int fh,int fl,int tfh,int tfl,int size){     if(size==1)       return ;  int t=tile++

daiyunmou的博客 765

Ecg信号QRS波峰检测:A Real-Time QRS Detection Algorithm (Pan-Tompkins法)

Pan-Tompkins法是R峰检测的经典方法,被引量高达6000+次。 Pan J, Tompkins W J. A real-time QRS detection algorithm[J]. IEEE transactions on biomedical engineering, 1985 (3): 230-236. 本文对论文流程进行了总结,并参考BioSigKit项目,复现了论文代码。 流程图: 代码如下: 第一部分是信号读入,这里使用MIT_BIH信号的100,读入10000个数据点 第二部分

weixin_42870380的博客 1万+

极空间NAS零基础部署Wiki.js:Docker+PostgreSQL全流程避坑指南

本文提供了一份在极空间NAS上从零部署Wiki.js私有知识库的详细指南。通过Docker容器化技术,结合PostgreSQL数据库,手把手讲解环境准备、核心组件配置、性能优化及安全加固等全流程,并特别针对极空间平台特性提供了避坑要点,帮助用户打造安全、高效、自主可控的知识管理系统。

3a9bq4r8t2y的博客 485

【算法】棋盘覆盖问题

#include<iostream> #include<stdio.h> #include<string.h> using namespace std; int t; // 总共用的骨牌数量 int board[256][256]; void ChessBoard(int tr,int tc,int dr,int dc,int size) { ...

C_xixixixi的博客 243

联想Win10改Win7设置BIOS指南

通过本文的指南,你应该能够成功地在联想Win10电脑上设置BIOS以支持Windows 7的安装和运行。尽管Windows 10提供了许多现代化的功能和改进,但如果你因特定需求而更倾向于使用Windows 7,那么本文提供的步骤将帮助你顺利实现这一转换。请记住,在更改操作系统前务必做好充分的准备工作,并在安装过程中保持耐心和细心。祝你安装顺利!

mmoo_python的博客 2035

棋盘覆盖问题(附完整代码)

策略:分治法 分治的技巧在于如何划分棋盘,使划分后的子棋盘的大小相同,并且每个子棋盘均包含一个特殊方格,从而将原问题分解为规模较小的相同子问题(所以才要用一个L型骨牌去填充交汇处构造出含特殊点的子棋盘)。 递归地使用这种分割,直至棋盘简化为1×1棋盘 用一个二位整型数组board表示棋盘。board[0][0]是棋盘左上角方格。tile是算法中的一个全局变量,用来表示L型骨牌的编号,其初始值为0.算法的输入参数是: tr:棋盘左上角方格的行号; tc:棋盘左上角方格的列号码; dc:特殊方格所在的列号;

weixin_44469806的博客 6148

chembl_webresource_client 包数据接口下载chembl数据库;ZINC数据库下载、simles获取

点击进去https://zinc.docking.org/subclasses/kinase/predictions/,然后下载sdf模式,这里可以转化simles格式,如果下载csv里面没有包含simles。参考:https://github.com/chembl/chembl_webresource_client/blob/master/demo_wrc.ipynb。参考:https://zinc.docking.org/这是网页搜索查看,16条数据。这个数据这下载特别慢。

weixin_42357472的博客 3046

YOLO 系列专栏(二十九)YOLO26 × StarNet 轻量化涨点方案(CVPR 2024)轻量化、主干改进篇 | 星星卷积虽小,却蕴藏着巨大的高效潜力

StarNet 出自 CVPR 2024 轻量化主干网络工作,核心创新是,依靠逐元素乘法实现高阶特征融合,在几乎不增加参数量与 FLOPs 的前提下,大幅提升特征表达能力,天然适合等多任务统一建模。本文将 StarNet 完整替换 YOLO26 原有主干,保留 YOLO26 无 NMS 检测头与轻量化结构,实现,并提供。

qq_36130719的博客 410

棋盘覆盖(C语言)

在一个×个方格组成的棋盘中,恰有一个方格与其他方格不 同,称该方格为“特殊方格”,且称该棋盘为“特殊棋盘”,在棋盘覆盖问题中,要用图1所示的4种不同形态的L型骨牌覆盖给定的特殊棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠覆盖。 本文采用C语言进行编程,并且相信讲解了编程的思想。易懂。

kaizitian的博客 4944

手机VPN的连接方法分享

6、返回到VPN页面,可以看到刚刚新添加的VPN,点击开启VPN后面的开关。5、在打开的添加VPN的页面中输入VPN的信息后点击右上角的“保存”按钮。7、待VPN开关开启后,可以看到添加的VPN正在连接的提示信息了。2、在打开的小米手机设置页面中点击“更多连接方式”的菜单项。3、然后在打开的更多连接方式页面中点击VPN的菜单项。4、在打开的VPN设置页面中点击“添加VPN”的按钮。1、首先在手机屏幕左右的滑动,找到手机的设置图标。

惠惠软件 3万+

计算机算法设计与分析——求解棋盘覆盖问题

【问题描述】 在一个由2^k * 2^k(k>0)的棋盘,恰有一个方格与其它方格不同,称该方格为特殊方格。现在要用如下的L型骨牌覆盖除了特殊方格外的其他全部方格,骨牌可以任意旋转,并且任何两个骨牌不能重叠。请给出一种覆盖方法。 【问题求解】 棋盘中的方格数=2^k * 2k=4k,覆盖使用的L型骨牌个数=(4^k-1)/3。 采用的方法是:将棋盘划分为4个大小相同的4个象限,根据特殊方格的...

qq_44691784的博客 758

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

分治算法之 棋盘覆盖问题(完整代码实现)

我在这里是用了一个简化的方式,只是代码简化,还是分治递归思想。一分为4,直至2*2时可直接解决。 四种骨牌的摆放刚好对应:dir[4][2] = { { 0, 0 }, { 0, 1 }, { 1, 1 }, { 1, 0 } }; 这四个方向。 而这4个方向,又可用来判断残缺位置的 4个方向(左上,右上,右下,左下)。 因此可以用循环,而不是依次判断四个方向,简化代码。 也可以用...

thewebcode 3485

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

手把手教会你-棋盘覆盖算法以及代码实现!!

在一个2k×2k (k≥0)个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为特殊方格。 棋盘覆盖问题要求用如图(b)所示的L型骨牌覆盖给定棋盘上除特殊方格以外的所有方格,且骨牌之间不得有重叠。 (a) k=2时的一种棋盘 (b) 4种不同形状的L型骨牌 分析题目: 当看k>0时,将2k×2k ...

qq_53344479的博客 2671

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

棋盘覆盖代码实现

棋盘覆盖代码实现 package site.wanjiahao.chesscover; public class ChessCover { // L形骨牌数量 private static int tile = 1; // 初始化棋盘数组 private static final int[][] chess = new int[8][8]; public static void main(String[] args) { optionChess

qq_43433723的博客 383

棋盘覆盖超详细解析+代码实现-分治法解决

题目描述 在一个2^k×2^k 个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘。在棋盘覆盖问题中,要用图示的4种不同形态的L型骨牌覆盖给定的特殊棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠覆盖。 输入要求 输入一个整数k,k<=5; 输入特殊格子的坐标x,y。 输出要求 输出一个由数值表示的二维矩阵。填充规则如下: (1)用数值填充方格; (2)特殊方格数值为0; (3)从中心点开始;然后左上、右上、左下、右下的计数顺序填数;同一块.

Escape the bug的博客 2294

算法与数据结构 | 基于Python实现的棋盘覆盖问题可视化(分治算法)

​ 具体问题描述:在一个2k×2k 个方格组成的棋盘中,恰有一个方格与其它方格不同,称该方格为一特殊方格,且称该棋盘为一特殊棋盘。在棋盘覆盖问题中,要用图示的4种不同形态的L型骨牌覆盖给定的特殊棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠覆盖。...

MingriAngus的博客 4619

浅谈棋盘覆盖问题(算法思想及伪代码)

问题描述:在一个的方格组成的棋盘中,有一个方格与其他的方格不同,称之为奇异块。要求:若使用一下四种L型骨牌覆盖除这个奇异块的其他方格,覆盖过程中L型骨牌之间不能有互相覆盖,设计算法求出覆盖方案。(四种L型骨牌如下图) 算法思想:分治法。 分治法原理:1.划分2.求解3.合并。将原始问题分解为如果个互不相同的子问题,对子问题进行求解。 (1)解题思路: 1.当k>0时,可以将棋盘由中心划分为对称的四份小棋盘(子问题划分)此时,我们很容易知道奇异块一定在其中一个子棋盘中,其他三个相邻的子棋盘没..

m0_56603583的博客 4948

棋盘覆盖问题——分治法——代码清晰易懂

一、运行环境 DevC++ 二、题目描述 棋盘覆盖问题。有一个2^k × 2^k个方格的棋盘,其中恰有一个方格残缺。用下面四种三格板覆盖更大的棋盘。 要求: ①两个三格板不能重叠。 ②三格板不能覆盖残缺方格,但必须覆盖其他所有的方格。 用以下形式进行结果输出 三、问题分析 采用分治的方法解决该问题。把2k×2k的棋盘分为4个2k-1×2k-1的子棋盘,使问题规模变小,直至将棋盘分割为1×1的子棋盘。 该问题属于二分法不相似的情况:分割后的4个子棋盘只有一个带有残缺。分治的技巧在于如何划分棋盘,使划分后的

qq_44886213的博客 7044

C语言:棋盘覆盖(代码注释+运行结果)

代码如下: #include<stdio.h> int board[100][100]; int t; void cover(int left_i,int right_j,int dot_i,int dot_j,int size) { if (size == 1) {//判断是否k=0; return ; } //记录L贴纸 int tem = ++t; int s = size / 2;//棋盘分开;s为已分方形边长 if (dot_i < left_i + s &a

weixin_55797565的博客 1716

分治法-棋盘覆盖问题

问题描述: 在一个2k×2k 个方格组成的棋盘中,有一个方格与其它不同,称该方格为特殊方格,且称该棋盘为一特殊棋盘。 k=2时的一种棋盘 要求用下图所示的4种L形态骨牌覆盖给定的特殊棋盘。 限制条件: (1)覆盖给定特殊棋盘上除特殊方格以外的所有方格。 (2)任何2个L型骨牌不得重叠覆盖。 解决思路: 特殊方格在棋盘中可能出现的位置有4^k种,因而有...

HeinSven的博客 4513

2棋盘覆盖(分治)

在一个 2^k * 2^k 个方格组成的棋盘中,若恰有一个方格与其他方格不同,则称该方格为一个特殊方格,且称该棋盘为一个特殊棋盘。显然,特殊方格在棋盘上出现的位置有 4^k 种情况,即k>=0,有4^k种不同的特殊棋盘。:用4种不同形态的L型骨牌覆盖一个给定的特殊棋盘(即特殊方格的位置已经确定了)上除特殊方格外的所有方格,且任何两个L型骨牌不得重复覆盖。按照规则,我们很容易知道,在2k的棋盘覆盖中,用到的L型骨盘数恰为(4^k-1)/3,即(所有方格个数-特殊方格个数)/3。

我走的每一步都算数 1976

棋盘覆盖问题(C实现)——分治算法的思想

算法思想参考 https://www.cnblogs.com/Jason-Damon/archive/2013/06/14/3136893.html https://wenku.baidu.com/view/e331f06c336c1eb91a375d75.html C语言代码实现 #include&lt;stdio.h&gt; int matrix[100][100]={0}; i...

seyemyl的博客 4222

分治算法---棋盘覆盖问题java代码实现

public class qipan { static int MAX_SIZE=16; static int board[][]=new int[MAX_SIZE][MAX_SIZE];     static int tile=0; public void chessboard(int tr,int tc,int dr,int dc,int size){    if(size==1)

程序猿杨欣 1674
上一篇: C++ Template 基础篇(转载)
下一篇: 汉诺塔程序
xifengcode
博客等级 码龄9年 529粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值