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

news2024/11/27 22:26:51

一、 问题描述

 二、算法思想  

首先,将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.coloradmin.cn/o/1851654.html

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

相关文章

Pytest框架中pytest.mark功能

文章目录 mark功能 1. 使用pytest.mark.skip 2. 使用pytest.mark.skipif 3. 使用 pytest.mark.xfail 4使用pytest.mark.parametrize 5 使用pytest.mark.自定义标记 6 使用pytest.mark.usefixtures pytest 的mark功能在pytest官方文档是这样解释的&#xff1a; https://…

【C语言】解决C语言报错:Buffer Overflow

文章目录 简介什么是Buffer OverflowBuffer Overflow的常见原因如何检测和调试Buffer Overflow解决Buffer Overflow的最佳实践详细实例解析示例1&#xff1a;字符串操作不当示例2&#xff1a;数组访问越界示例3&#xff1a;未检查输入长度示例4&#xff1a;使用不安全的函数 进…

公共 IP 地址和私有 IP 地址的区别总结

什么是IP地址&#xff1f; IP 地址&#xff0c;即互联网协议地址&#xff08;Internet Protocol Address&#xff09;&#xff0c;是网络设备在网络中进行通信的标识。IP 地址可以看作是设备在网络中的“地址”&#xff0c;有助于数据包在网络中找到正确的接收端。IP 地址主要…

FP7195做大功率钓鱼灯应用方案,0.1%深度无极无频闪调光调色应用,调光曲线顺滑无突兀

文章目录 文章目录 方案背景 一、夜钓灯电路框架 二、FP7195芯片介绍 芯片参数 总结 方案背景 目前夜钓正在逐渐变得时尚起来&#xff0c;随着夜钓群体的年轻化&#xff0c;人们对于夜钓灯的审美要求也越来越高。夜钓灯作为夜间钓鱼的重点装备&#xff0c;不仅仅需要高质量的光…

视频号封禁VS京东支持,AI虚拟主播是红利还是“毒药”?

大数据产业创新服务媒体 ——聚焦数据 改变商业 在数字化浪潮的推动下&#xff0c;AI技术正以前所未有的速度渗透到我们生活的每一个角落。而当AI技术遇上直播带货&#xff0c;一个全新的概念——AI数字人直播带货&#xff0c;便应运而生。这不仅仅是一场技术的革新&#xff0…

定时任务查看报拒绝权限,不执行

排查思路&#xff1a; 1、查看/etc/cron.deny ##此文件是空的 cat /etc/cron.deny只有cron.deny文件。但文件无内容&#xff0c;不存在限制&#xff08;如果存在cron.allow文件&#xff0c;以cron.allow文件优先&#xff1b;若cron.allow和cron.deny都存在&#xff0c;以cron…

力扣SQL50 查询结果的质量和占比 AVG(条件)

Problem: 1211. 查询结果的质量和占比 &#x1f468;‍&#x1f3eb; 参考题解 Code select query_name,round(avg(rating/position),2) as quality,round(100 * avg(rating < 3), 2) as poor_query_percentage from Queries group by query_name -- 到此结束过不了最后一…

el-upload 组件上传文件(查询,上传,删除,下载功能)

1.html el-upload中的属性&#xff1a; <el-upload ref"upload" class"upload-demo" // element-ui自带的样式 :headers"headerOdj" // 文件上传的头,带token&#xff08;重要&#xff0c;不然传输大文件会断掉&…

使用Spring Boot实现用户认证和授权

文章目录 引言第一章 Spring Boot概述1.1 什么是Spring Boot1.2 Spring Boot的主要特性 第二章 用户认证和授权基础知识2.1 用户认证2.2 用户授权2.3 Spring Security概述 第三章 项目初始化第四章 实现用户认证和授权4.1 定义用户实体类和角色实体类4.2 创建Repository接口4.3…

昇思25天学习打卡营第4天 | 数据变换

内容介绍&#xff1a;通常情况下&#xff0c;直接加载的原始数据并不能直接送入神经网络进行训练&#xff0c;此时我们需要对其进行数据预处理。MindSpore提供不同种类的数据变换&#xff08;Transforms&#xff09;&#xff0c;配合数据处理Pipeline来实现数据预处理。所有的T…

书生·浦语大模型LagentAgentLego智能体应用搭建 第二期

文章目录 智能体概述智能体的定义智能体组成智能体范式 环境配置Lagent&#xff1a;轻量级智能体框架实战Lagent Web Demo用 Lagent 自定义工具 AgentLego&#xff1a;组装智能体“乐高”直接使用AgentLego作为智能体工具使用 用 AgentLego 自定义工具 智能体概述 智能体的定义…

gbase8s获取表的serial字段下一个insert序列值

serial字段&#xff0c;有个函数可以获取到最后插入的序列值&#xff0c;但是好像只能获取到当前会话最后一次插入的序列值&#xff0c;不论是SELECT dbinfo(sqlca.sqlerrd1) FROM dual;&#xff0c;还是select dbinfo(bigserial) from dual;&#xff0c;或者select dbinfo(ser…

点击旋转箭头样式

实现效果&#xff1a; html界面&#xff0c;主要通过isdown来控制箭头是上还是下 <el-popoverplacement"bottom"trigger"click":visible-arrow"false"v-model"isdown"popper-class"user-popover"><divslot"re…

ICMAN触摸芯片——防水触摸

ICMAN触摸芯片之防水触摸触摸按键控制开关和调节挡位和切换不同模式 淋水状态下&#xff0c;触摸按键反应灵敏&#xff0c;不误触发&#xff0c; ICMAN触摸芯片稳定性与抗干扰能力强&#xff0c; 可以轻松解决家电触摸感应不灵敏和有水误触发的问题&#xff0c; 从而有效实…

如何利用AI简历工具为实习简历加分?

时间匆匆&#xff0c;我们又迎来了毕业季。大学生活丰富多彩&#xff0c;学业同样重要。毕业答辩对于每位大学生来说都是一道重要的门槛。回想起那些为了答辩准备而熬夜、焦虑的日子&#xff0c;那份努力至今难忘。 虽然答辩的准备工作可能相当繁琐&#xff0c;但幸运的是&…

数学建模系列(2/4):建模入门

目录 引言 1. 如何开始数学建模 1.1 选择和描述问题 1.2 提出基本假设 1.3 确定模型类型 2. 建模的数学基础 2.1 线性代数基础 矩阵运算 线性方程组的解法 2.2 微分方程基础 常微分方程 偏微分方程 2.3 统计与概率基础 描述性统计 概率基础 3. 模型的求解方法 …

Linux学习笔记:前言与操作系统的初识【1】

前言 为什么学习Linux 作为当下最流行的操作系统之一&#xff0c;学会如何使用和操作Linux操作系统也就是每位计算机学者的看家必备技能了。其次呢&#xff0c;本人受Linux的创始人林纳斯的影响太深了&#xff0c;觉得这个人太了不起了&#xff0c;而且人家大学里就自研开发出…

Block-Max-Maxscore(Lucene 9.10.0)

Lucene中基于论文&#xff1a;Optimizing Top-k Document Retrieval Strategies for Block-Max Indexes 实现了Block-Max-Maxscore (BMM) 算法&#xff0c;用来优化关键字之间只有OR关系&#xff0c;并且minShouldMatch < 1时的查询。比如有查询条件为&#xff1a;term1 OR …

2024/6/22 英语每日一段

France is the only country in Europe with an EPR that covers the textile industry. Critics say the policy does little for “end-of-line” countries such as Ghana because the fee paid by clothing producers is low at just €0.06 for each item, and the funds …

小米红米全机型TWRP下载刷入教程-获取root权限--支持小米14/红米K7Pro/红米Turbo3等机型

刷机注意&#xff1a; 本教程为小米红米全机型专用TWRP_Recovery合集&#xff0c;ROM乐园独家首发整理。请确保你的电脑能正确连接你的手机&#xff0c;小米红米手机需要解锁BL&#xff0c;请参照下面教程 小米MIUI澎湃OS解锁BL教程&#xff1a;小米手机官方解锁BootLoader图文…