2022年CSP-J认证 CCF信息学奥赛C++ 中小学初级组 第一轮真题-完善程序题解析

news2024/11/17 10:33:16

2022CCF认证第一轮(CSP-J)真题

三、完善程序题

第一题 枚举因数

从小到大打印正整数n的所有正因数。试补全枚举程序

#include <iostream>
using namespace std;
	
int main(){
	int n;
	cin >> n;
	
	vector<int> fac;
	fac.reserve((int)ceil(sqrt(n)));
	
	int i;
	for (i= 1;i*i< n; ++i){
		if (①) {
			fac.push back(i);
		}
	}
	
	for (int k = 0; k< fac.size();++k){
		cout << ② << " ";
	}
	if (③) {
		cout <<④<<" ";
	}
	for (int k= fac.size()-1; k >= 0; --k){
		cout <<⑤<<;
	}
}

程序分析:此程序的功能是找出一个给定数n的所有因子。程序的思路是,遍历从1到sqrt(n)的所有数,如果n能被该数整除,则将该数添加到一个vector中。然后再遍历vector,输出所有的因子,同时输出n除以该因子的结果,即另一个因子。 具体分析如下:

  • 首先,程序通过cin读取一个整数n。
  • 然后,定义一个vector<int>类型的变量fac来保存因子。
  • 使用一个for循环,从1开始遍历到sqrt(n)。
  • 表达式i*i < n保证了i的取值范围在[1, sqrt(n))之间。
  • 在循环中,使用if条件判断n是否能被i整除。
  • 如果能整除,则将i添加到fac vector中。
  • 循环结束后,通过一个for循环遍历fac vector,按顺序输出所有的因子。
  • 如果i*i等于n,说明n是一个完全平方数,此时只需要输出一个因子即可。
  • 最后,通过一个逆向的for循环遍历fac vector,输出n除以每个因子的结果,即另一个因子。

单选题

①处应该填

A. n%i== 0
B. n%i== 1
C. n % (i-1)== 0
D. n % (i-1)== 1

答案:A

答案分析:从程序分析中可以得知此处应该是A

②处应该填

A. n / fac[k]
B. fac[k]
C. fac[k]-1
D. n / (fac[k]-1)

答案:B

答案分析:从程序分析中可以得知此处应该是B

③处应该填

A. (i-1)*(i-1)== n
B. (i-1)*i==n
C. i*i== n
D. i*(i-1)== n

答案:C

答案分析:从程序分析中可以得知此处应该是C

④处应该填

A. n-i
B. n-i+1
C. i-1
D. i

答案:D

答案分析:从程序分析中可以得知此处应该是D

⑤处应该填

A. n / fac[k]
B. fac[k]
C. fac[k]-1
D. n / (fac[k]-1)

答案:A

答案分析:从程序分析中可以得知此处应该是A

第二题 洪水填充

现有用字符标记像素颜色的 8x8 图像。颜色填充的操作描述如下:给定起始像素的位置和待填充的颜色将起始像素和所有可达的像素(可达的定义:经过一次或多次的向上、下、左、右四个方向移动所能到达且终点和路径上所有像素的颜色都与起始像素颜色相同),替换为给定的颜色。试补全程序。

#include<iostream>
using namespace std;
const int ROWS = 8;
const int COLS = 8;

struct Point {
	int r, c;
	Point(int r, int c): r(r), c(c){}
};

bool is_valid(char image[ROWS][COLS], Point pt,int prev_color, int new_color){
	int r= pt.r;
	int c = pt.c;
	return (0 <= r && r < ROWS && 0 <=c && c < COLS && ① && image[r][c] != new_color);
}

void flood_fill(char image[ROWS][COLS], Point cur, int new_color){
	queue<Point> queue;
	queue.push(cur);
	
	int prev_color = image[cur.r][cur.c];
	②;
	
	while (!queue.empty()){
		Point pt = queue.front();
		queue.pop();
		
		Point points[4]={③,Point(pt.r - 1, pt.c),Point(pt.r, pt.c + 1), Point(pt.r, pt.c - 1)};
		for (auto p : points){
			if (is_valid(image, p, prev_color, new_color)){
				④;
				⑤;
			}
		}
	}
}


int main(){
	char image[ROWS][COLS] = {{'g', 'g', 'g', 'g', 'g', 'g', 'g', 'g'},
	{'g', 'g', 'g', 'g', 'g', 'g', 'r', 'r'},
	{'g', 'r', 'r', 'g', 'g', 'r', 'g', 'g'},
	{'g', 'b', 'b', 'b', 'b', 'r', 'g', 'r'},
	{'g', 'g', 'g', 'b', 'b', 'r', 'g', 'r'},
	{'g', 'g', 'g', 'b', 'b', 'b', 'b', 'r'},
	{'g', 'g', 'g', 'g', 'g', 'b', 'g', 'g'},
	{'g', 'g', 'g', 'g', 'g', 'b', 'b', 'g'}};
	
	Point cur(4, 4);
	char new_color ='y';
	flood_fill(image, cur, new_color);
	
	for (int r= 0;r< ROWS; r++){
		for (int c = 0; c< COLS; c++){
			cout << image[r][c] << " ";
		}
		cout << endl;
	}
	return 0;
}
//输出
//g g g g g g g g
//g g g g g g r r
//g r r g g r g g
//g y y y y r g r
//g g g y y r g r
//g g g y y y y r
//g g g g g y g g
//g g g g g y y g

程序分析:此程序实现了一个基于队列的洪泛填充算法(BFS),用于填充一个8x8的字符矩阵。该算法从给定的起始点开始,将起始点的颜色替换为新的颜色,并向该点的上下左右四个邻居点进行遍历,如果邻居点的颜色与起始点颜色相同且不等于新的颜色,则将邻居点的颜色替换为新的颜色,并将邻居点添加到队列中继续遍历。 具体的步骤如下:

  • 定义一个结构体Point,用于表示矩阵中的一个点,包含行号r和列号c。
  • 定义一个函数is_valid,用于判断一个点是否是有效的,即在矩阵范围内,颜色与起始点颜色相同且不等于新的颜色。
  • 定义一个函数flood_fill,接受矩阵、起始点和新的颜色作为参数。
  • 首先创建一个队列,并将起始点添加到队列中。
  • 获取起始点的颜色,并将起始点的颜色替换为新的颜色。
  • 使用while循环遍历队列,直到队列为空。
  • 在每次循环中,取出队列中的第一个点,并获取其邻居点。
  • 遍历邻居点,如果邻居点是有效的,将其颜色替换为新的颜色,并将邻居点添加到队列中。
  • 在主函数main中,定义一个8x8的字符矩阵image,并初始化。
  • 创建一个起始点cur,坐标为(4, 4)。
  • 定义一个新的颜色new_color为'y'。
  • 调用flood_fill函数,将矩阵image从起始点cur开始进行洪泛填充。
  • 遍历矩阵image,并输出每个点的颜色。

单选题

①处应该填

A. image[r][c]== prev_color
B. image[r][c] != prev color
C. image[r][c] == new_color
D. image[r][c] != new_color

答案:A

答案分析:从程序分析中可以得知此处应该是起始点,答案A

②处应该填

A. image[cur.r+1][cur.c]= new_color
B. image[cur.r][cur.c]= new_color
C. image[cur.r][cur.c+1]= new_color
D. image[cur.r][cur.c]= prev_color

答案:B

答案分析:从程序分析中可以得知此处应该是起始点的颜色替换为新的颜色,答案B

③处应该填

A. Point(pt.r, pt.c)
B. Point(pt.r, pt.c+1)
C. Point(pt.r+1, pt.c)
D. Point(pt.r+1, pt.c+1)

答案:C

答案分析:从程序分析中可以得知此处应该是获取相应的4个邻居点,答案C

④处应该填

A. prev_color = image[p.r][p.c]

B. new_color = image[p.r][p.c]

C. imagelp.r][p.c]= prev_color

D. image[p.r][p.c]= new_color

答案:D

答案分析:从程序分析中可以得知此处应该是邻居点替换为新的颜色,答案D

⑤处应该填

A. queue.push(p)
B. queue.push(pt)
C. queue.push(cur)
D. queue.push(Point(Rows,COLS))

答案:A

答案分析:从程序分析中可以得知此处应该是将邻居点加入队列中,答案A

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

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

相关文章

备战蓝桥杯---线段树基础1

引入&#xff1a;RMQ问题&#xff1a; 什么是RMQ&#xff1f; 显然&#xff0c;我们无法用前缀维护&#xff0c;因此&#xff0c;我们需要用到线段树的知识&#xff1a; 什么是线段树&#xff1f; 线段树是用一种树状结构存储一个连续区间信息的数据结构 下面我们用图解释用…

2024全国水科技大会暨高氨氮废水厌氧氨氧化处理技术论坛(四)

一、会议背景 为积极应对“十四五”期间我国生态环境治理面临的挑战&#xff0c;加快生态环境科技创新&#xff0c;构建绿色技术创新体系&#xff0c;全面落实科学技术部、生态环境部等部委编制的《“十四五”生态环境领域科技创新专项规划》&#xff0c;积极落实省校合作&…

物联网与智慧城市的融合:构建智能化、便捷化、绿色化的城市未来

一、引言 随着科技的飞速发展和城市化的不断推进&#xff0c;物联网技术正逐步渗透到城市的各个领域&#xff0c;成为推动智慧城市建设的核心力量。物联网与智慧城市的融合&#xff0c;不仅为城市治理提供了高效、智能的解决方案&#xff0c;也为市民的生活带来了前所未有的便…

Docker Swarm全解析:实现微服务高可用与故障转移的秘密武器

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Docker入门到精通》 《k8s入门到实战》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、基本概念和介绍 1、Docker Swarm 是什么&#xff0c;它与 …

APP自动化测试-入门示例

入门示例 通过上一篇博客APP自动化测试介绍-CSDN博客的学习&#xff0c;相信大家对APP自动化测试已经有了一定的了解&#xff0c;下面演示一下入门示例 1. 配置Appium 1.1. 点击Appium图标&#xff0c;打开服务器&#xff1a; 1.2. 点击Edit Configurations,进入配置页面&am…

elment-ui table表格排序后 清除排序箭头/恢复默认排序 的高亮样式

问题描述&#xff1a; 1.默认排序是按照名称升序排列&#xff08;图一&#xff09; 2.在选择了筛选项以及其他排序方式之后&#xff0c;箭头高亮是这样的&#xff08;图二&#xff09; 3.当我点击清空按钮后&#xff0c;类型清空了&#xff0c;并且传给后端的排序方式是名称/升…

文本多分类

还在用BERT做文本分类&#xff1f;分享一套基于预训练模型ERNIR3.0的文本多分类全流程实例【文本分类】_ernir 文本分类-CSDN博客 /usr/bin/python3 -m pip install --upgrade pip python3-c"import platform;print(platform.architecture()[0]);print(platform.machine…

StarRocks实战——表设计规范与监控体系

目录 前言 一、StarRocks表设计 1.1 字段类型 1.2 分区分桶 1.2.1 分区规范 1.2.2 分桶规范 1.3 主键表 1.3.1 数据有冷热特征 1.3.2 大宽表 1.4 实际案例 1.4.1 案例一&#xff1a;主键表内存优化 1.4.2 案例一&#xff1a;Update内存超了&#xff0c;导致主键表导…

【AI Agent系列】【MetaGPT多智能体学习】5. 多智能体案例拆解 - 基于MetaGPT的智能体辩论(附完整代码)

本系列文章跟随《MetaGPT多智能体课程》&#xff08;https://github.com/datawhalechina/hugging-multi-agent&#xff09;&#xff0c;深入理解并实践多智能体系统的开发。 本文为该课程的第四章&#xff08;多智能体开发&#xff09;的第三篇笔记。主要是对课程刚开始环境搭…

YOLOv9有效提点|加入SE、CBAM、ECA、SimAM等几十种注意力机制(一)

专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;主力高效涨点&#xff01;&#xff01;&#xff01; 一、本文介绍 本文将以SE注意力机制为例&#xff0c;演示如何在YOLOv9种添加注意力机制&#xff01; 《Squeeze-and-Excitation Networks》 SENet提出…

【六袆 - React】Next.js:React 开发框架;Next.js开发框架的特点

Next.js&#xff1a;React 开发框架 Next.js的特点 1.直观的、基于页面的路由系统&#xff08;并支持动态路由&#xff09; Next.js 提供了基于文件系统的路由&#xff0c;意味着你可以通过创建页面文件来定义路由。 伪代码示例&#xff1a; // pages/index.js export defa…

css【详解】—— 圣杯布局 vs 双飞翼布局 (含手写清除浮动 clearfix)

两者功能效果相同&#xff0c;实现方式不同 效果预览 两侧宽度固定&#xff0c;中间宽度自适应&#xff08;三栏布局&#xff09;中间部分优先渲染允许三列中的任意一列成为最高列 圣杯布局 通过左右栏填充容器的左右 padding 实现&#xff0c;更多细节详见注释。 <!DOCTYP…

day03-Vue-Element

一、Ajax 1 Ajax 介绍 1.1 Ajax 概述 概念&#xff1a;Asynchronous JavaScript And XML&#xff0c;异步 的 JavaScript 和 XML。 作用&#xff1a; 数据交换&#xff1a;通过 Ajax 可以给服务器发送请求&#xff0c;并获取服务器响应的数据。异步交互&#xff1a;可以在 不…

排序(2)——希尔排序

希尔排序&#xff08;缩小增量排序&#xff09; 基本思想 希尔排序法又称缩小增量法。希尔排序法的基本思想是&#xff1a;先选定一个整数&#xff0c;把待排序文件中所有记录分成个组&#xff0c;所有距离为的记录分在同一组内&#xff0c;并对每一组内的记录进行排序。然后&…

lotus 从矿工可用余额扣除扇区质押

修改 miner配置文件 # Whether to use available miner balance for sector collateral instead of sending it with each message## type: bool# env var: LOTUS_SEALING_COLLATERALFROMMINERBALANCE#CollateralFromMinerBalance falseCollateralFromMinerBalance true质押金…

手写数字识别(慕课MOOC人工智能之模式识别)

问题&#xff1a;手写数字识别 数据集 数据集链接请点击我 代码 %mat2vector.m function [data_] mat2vector(data,num)[row,col,~] size(data);data_zeros(num,row*col);for page 1:numfor rows 1:rowfor cols1:coldata_(page,((rows-1)*colcols)) im2double(data(rows,cols…

应用稳定性优化1:ANR问题全面解析

闪退、崩溃、无响应、重启等是应用稳定性常见的问题现象&#xff0c;稳定性故障大体可归类为ANR/冻屏、Crash/Tombstone、资源泄露三大类。本文通过对三类故障的产生原因、故障现象、触发机制及如何定位等&#xff0c;展开深度解读。 本文将详解ANR类故障&#xff0c;并通过一…

java数据结构与算法刷题-----LeetCode437. 路径总和 III(前缀和必须掌握)

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 1. 深度优先2. 前缀和 1. 深度优先 解题思路&#xff1a;时间复…

图书推荐||Word文稿之美

让你的文档从平凡到出众&#xff01; 本书内容 《Word文稿之美》是一本全面介绍Word排版技巧和应用的实用指南。从初步认识数字排版到高效利用模板、图文配置和表格与图表的排版技巧&#xff0c;再到快速修正错误和保护文件&#xff0c;全面系统地讲解数字排版的技术和能力&…

多行业万能预约门店小程序源码系统 支持多门店预约小程序 带完整的安装代码包以及搭建教程

随着消费者对于服务体验要求的不断提升&#xff0c;门店预约系统成为了许多行业提升服务质量、提高运营效率的重要工具。然而&#xff0c;市面上的预约系统往往功能单一&#xff0c;无法满足多行业、多场景的个性化需求。下面&#xff0c;小编集合了多年的行业经验和技术积累&a…