头歌资源库(14)残缺棋盘

一、 问题描述

 二、算法思想  

首先,将2^k × 2^k的棋盘划分为四个相等大小的子棋盘,定义为左上、左下、右上和右下四个子棋盘。

然后,根据残缺格的坐标,确定其中一个子棋盘是不完整的,即残缺子棋盘。假设残缺子棋盘是左上子棋盘。

接下来,分以下三种情况进行处理:

  1. 当k=1时,即棋盘大小为2×2时,直接填充序号即可。

  2. 当残缺子棋盘的坐标位于左上子棋盘的右下角时,将左上子棋盘的右下角作为残缺格,其余三个子棋盘按照相同的规则进行处理。

  3. 当残缺子棋盘的坐标位于左上子棋盘的其他位置时,将左上子棋盘的右下角、右上子棋盘的左下角和左下子棋盘的右上角作为三个残缺格,其余三个子棋盘按照相同的规则进行处理。

递归地对每个子棋盘进行相同的处理,直到棋盘大小为2×2时,再直接填充序号。

具体实现时,可以使用递归函数来处理,函数的输入参数为棋盘大小和残缺格的坐标,输出为填充好序号的棋盘。

三、代码实现  

#include<stdio.h>
#include<math.h>
void TileBoard(int tr,int tc,int dr,int dc,int size);
void OutputBoard(int size);
int tile=1;
int Board[1025][1025];
int main()
{int n,a,b;scanf("%d",&n);int sum;sum=pow(2,n);scanf("%d %d",&a,&b);Board[n][n]=0;TileBoard(0,0,a,b,sum);OutputBoard(sum);return 0;
}
void TileBoard(int tr,int tc,int dr,int dc,int size)
{if(size==1) return;int t=tile++,s=size/2;if(dr<tr+s&&dc<tc+s)TileBoard(tr,tc,dr,dc,s);else{Board[tr+s-1][tc+s-1]=t;TileBoard(tr,tc,tr+s-1,tc+s-1,s);}if(dr<tr+s&&dc>=tc+s)
TileBoard(tr,tc+s,dr,dc,s);else {Board[tr+s-1][tc+s]=t;TileBoard(tr,tc+s,tr+s-1,tc+s,s);}if(dr>=tr+s&&dc<tc+s)TileBoard(tr+s,tc,dr,dc,s);else{ Board[tr+s][tc+s-1]=t;TileBoard(tr+s,tc,tr+s,tc+s-1,s);}if(dr>=tr+s&&dc>=tc+s)
TileBoard(tr+s,tc+s,dr,dc,s);else {Board[tr+s][tc+s]=t;TileBoard(tr+s,tc+s,tr+s,tc+s,s);}
}void OutputBoard(int size){for(int i=0;i<size;i++){for(int j=0;j<size;j++){printf("%-3d",Board[i][j]);}printf("\n");}printf("end");}

执行结果 

  结语   

想多了都是问题

做多了都是答案

!!!

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

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

相关文章

TOP命令参数

top命令是Linux和类Unix系统中一个非常强大的系统监控工具&#xff0c;用于实时查看系统中各个进程的资源使用情况。它可以显示CPU使用率、内存使用情况、进程PID、进程运行时间等重要信息。top命令支持多种参数和交互式命令&#xff0c;以下是主要参数及其含义&#xff1a; t…

新火种AI|Claude 3.5一夜封王超越GPT-4o!留给OpenAI的时间真的不多了...

AI大模型更新换代的速度&#xff0c;的确快到令人难以想象。 相信很多人现在对“最先进AI大模型”的印象还停留在GPT-4&#xff0c;但事实上&#xff0c;大模型领域的头把交椅早已悄然易主了好几回。就在GPT-4惊艳全球不久之后&#xff0c;其“死对头” Anthropic发布了Claude…

“循环购“:快消品行业的创新商业模式引领者

大家好&#xff0c;我是吴军&#xff0c;来自一家在软件开发与商业模式创新领域享有盛誉的公司。我们专注于为企业提供全方位的商城系统搭建及商业模式定制服务。迄今为止&#xff0c;我们已经成功地为众多企业打造了超过200种独特的商业模式&#xff0c;助力他们实现了显著的商…

如果你死了,你的代码怎么代替你继续存在下去

问你个问题&#xff0c;如果你写的程序代码特别耐用&#xff0c;特别引人注目&#xff0c;几乎全世界的人在用。那么问你个比较丧的问题&#xff0c;有一天你死了&#xff0c;你怎么维护你的程序代码呢&#xff1f; 你可能听说过这个人&#xff1a;Philip Hazel 。他在剑桥大学…

【Web3初识系列】如何连接 Binance Smart Chain通过交易对绘制 k 线?

连接 Binance Smart Chain通过交易对绘制 k 线 安装 web3 pip install web3连接到 Binance Smart Chain 使用公共的 BSC 节点 URL。 from web3 import Web3# 连接到 BSC 公共节点 bsc_url "https://bsc-dataseed.binance.org/" web3 Web3(Web3.HTTPProvider(bs…

【PL理论】(26) 内存管理:C语言实现内存管理的方式 | 栈帧的分配和释放 | C/C++ 手动内存管理

&#x1f4ad; 写在前面&#xff1a;在前面的章节中&#xff0c;语言的语义只分配了新的内存位置&#xff0c;我们没有讨论内存位置的释放。在实际的语言中&#xff0c;内存位置在执行过程中会被不断地分配和释放。下面的章节&#xff0c;我们将讨论编程语言的这种内存管理&…

套路化编程:C# ListView 保存、恢复列宽度

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 目录 技术基础 保存列头 删…

基于IDEA的Maven(依赖介绍和引用)

如何通过一个坐标信息&#xff08;依赖&#xff09;去引用 &#xff0c;某个"jar 包" 会在这篇博客进行学习。 目录 一、学习开始 &#xff08;0&#xff09;项目的结构组成和 "pom.xml" 文件内容。 &#xff08;1&#xff09;首先需要一个标签&#xf…

堆及其java手写实现

堆&#xff08;Heap&#xff09;是计算机科学中一种常用且高效的数据结构&#xff0c;通常被实现为一个完全二叉树。这个树形结构中的每个节点都有一个关联的值&#xff0c;并且这个值遵循一定的规则&#xff0c;从而使得堆具备特殊的性质&#xff0c;主要分为两种类型&#xf…

方差分析【单/双因素方差分析】

文章目录 方差分析一、单因素方差分析&#xff08;Analysis of Variance&#xff09;1.方差分析在做什么&#xff1f;2.方差分析的思路&#xff1a;3.方差分析中的计算&#xff1a;4.构造F统计量&#xff1a; 二、双因素方差分析(Two-way ANOVA)1.双因素方差分析在做什么&#…

时序预测 | Matlab基于Transformer多变量时间序列多步预测

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于Transformer多变量时间序列多步预测&#xff1b; 2.多变量时间序列数据集&#xff08;负荷数据集&#xff09;&#xff0c;采用前96个时刻预测的特征和负荷数据预测未来96个时刻的负荷数据&#xff1b; 3…

53【场景作图】纵深感

1 想清楚什么是前 什么是后 如果背景虚化,就不要处理地很平面,如果很平面,就留一个清晰的边缘 2 重叠 遮挡 被遮挡的物体会更远

Java中的内存管理:从堆到栈的深入解析

Java中的内存管理&#xff1a;从堆到栈的深入解析 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天&#xff0c;我将为大家详细介绍Java中的内存管理&#x…

微信小程序在独立分包中安装自定义依赖组件,构建自定义 npm 依赖

在微信小程序app.json文件中创建一个独立分包 然后在分包文件夹下 创建一个 package.json文件&#xff0c;在文件中添加你要安装的依赖文件及版本 在终端中开始安装依赖&#xff1a;npm i 依赖安装完成后&#xff0c;会产生一个 node_modules文件 需要项目的根目录下的projec…

动态规划:基本概念

Dynamic Programming 动态规划&#xff08;Dynamic Programming, DP&#xff09; 是一种算法设计技巧&#xff0c;通常用来解决具有重叠子问题和最优子结构性质的问题。它通过将问题分解为更小的子问题&#xff0c;逐步解决这些子问题并将结果存储起来&#xff0c;以避免重复计…

【深度学习】python之人工智能应用篇——图像生成技术(二)

说明&#xff1a; 两篇文章根据应用场景代码示例区分&#xff0c;其他内容相同。 图像生成技术&#xff08;一&#xff09;&#xff1a;包含游戏角色项目实例代码、图像编辑和修复任务的示例代码和图像分类的Python代码示例 图像生成技术&#xff08;二&#xff09;&#xff1a…

外星人Alienware m18R1 原厂Windows11系统

装后恢复到您开箱的体验界面&#xff0c;包括所有原机所有驱动AWCC、Mydell、office、mcafee等所有预装软件。 最适合您电脑的系统&#xff0c;经厂家手调试最佳状态&#xff0c;性能与功耗直接拉满&#xff0c;体验最原汁原味的系统。 原厂系统下载网址&#xff1a;http://w…

Redis源码学习:从头开始掌握Redis核心设计

Redis 代码整体架构 了解 Redis 代码的整体架构将帮助我们快速定位各个功能模块对应的代码文件&#xff0c;并全面了解 Redis 的功能。 Redis 目录结构 Redis 的源码总目录下包含四个子目录&#xff1a;deps、src、tests 和 utils。每个目录都有其特定的作用。通过了解目录结…

React逻辑复用的方式都有哪些

在日常开发中&#xff0c;能够优雅的复用组件和逻辑&#xff0c;是优秀开发者的职责。在react中&#xff0c;复用逻辑的方式有很多&#xff0c;可以适用于不同的业务场景。今天说三个比较有代表性的&#xff0c;Render Props、HOC、Hooks Render Props 创建一个接受函数作为其…

PyQt学习之简介

1.Python图形界面称为程序的用户交互界面&#xff0c;英文称之为 UI (user interface) Tkinter 基于Tk的Python库&#xff0c;Python官方采用的标准库&#xff0c;优点是作为Python标准库、稳定、发布程序较小&#xff0c;缺点是控件相对较少。 wxPython 基于wxWidgets的Py…