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,一经查实,立即删除!

相关文章

CPU使用率较高排查和解决思路

引言 在现代的计算系统中&#xff0c;CPU的高效利用直接关系到系统的整体性能和运行稳定性。然而&#xff0c;在实际的生产环境中&#xff0c;程序有时会面临CPU使用率过高的问题&#xff0c;导致系统响应缓慢、吞吐量下降&#xff0c;甚至应用程序崩溃。CPU使用率过高通常表明…

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

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

1网络安全的基本概念

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

微信小程序点赞动画特效实现

这里提供两种实现点赞动画特效的方法&#xff1a; 方法一&#xff1a;使用 CSS 动画 wxml 文件: <view class"like-container"><image src"{{isLiked ? likedImg : unlikedImg}}" class"like-icon {{isLiked ? liked : }}" bindta…

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

将硫酸镍萃取工艺中的萃取槽技改为离心萃取机&#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…

springboot 收取邮件带有图片处理

1.遇到的问题 邮件中带有图片的&#xff0c;part中含有cid的&#xff0c;可以从party下载&#xff0c;图片和附件要保存到自己的存储服务器。 邮件获取图片MailUtil 工具类 package com.esoon.cat.cc.email.utils.common;import com.alibaba.fastjson.JSONObject; import ja…

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;使模型生成恶意或不安全的输出。- …

Docker torchserve workflow部署流程

1. 先部署相关模型, 步骤见&#xff1a; Docker torchserve 部署模型流程 搭建涉及到的模型&#xff0c;如ocr_detection&#xff0c;ocr_judge&#xff0c;ocr_text, xxx_detection … 2. workflow文件 2.1 串行执行&#xff0c;示例1 &#xff08;1&#xff09;xxx_workf…

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

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

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

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

C++ 落地AI项目教程:以libtorch实现DGA恶意域名的检测

# C++ 落地AI项目教程:以libtorch实现DGA恶意域名的检测 1. DGA域名 域名的生成方式域名生成算法(DGA) 是一个可以生成大量新域名的程序。 网络犯罪分子和僵尸网络运营者会使用域名生成算法来频繁更改所使用的域名,从而花样翻新地发起各种恶意软件攻击。 利用这项技术,黑客可…

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基础上发展过来的。三层结…

大数据技术原理与应用

第一章、大数据概述 1、大数据时代的特征,并结合生活实例谈谈带来的影响。 (一)特征 1、Volume 规模性:数据量大。 2、Velocity高速性:处理速度快。数据的生成和响应快 摩尔定律:每两年,数据量增加一倍 1秒定律:响应时间时间控制在1秒以内 3、Variety多样化:数…