中小学信息学奥赛CSP-J认证 CCF非专业级别软件能力认证-入门组初赛模拟题第一套(完善程序题)

CCF认证CSP-J入门组模拟测试题第一套

三、完善程序题

第一题 九宫格

请完善下面的程序,将1~9个数字分别填人3x3的九宫格中,第一行的三个数字组成一个三位数。要使第二行的三位数是第一行的2倍,第三行的三位数是第一行的3倍且每个格子里的数字都不能重复,现在要求输出所有的填充方案,以每种方案中的第一行组成的三位数升序输出。

输出格式:

每一种方案输出共三行,每行中每两个数没有空格,每种方案输出后要输出一个空行。

最后一行一个数字,表示方案的总数。

#include<bits/stdc++.h>
using namespace std;
#define n 9
int a[10],b[10],t1,t2,t3,c;
void f(int s){
	int i;
	if(①){
		t1=a[1]*100+a[2]*10+a[3];
		t2=a[4]*100+a[5]*10+a[6];
		t3=a[7]*100+a[8]*10+a[9];
		if(②){
			cout<<t1<<endl<<t2<<endl<<t3<<endl<<endl;
			c++;
		}
		return;
	}
	for(i=1;i<=n;i++){
		if(b[i]==0){
			___③___
			b[i]=1;
			___④___
			___⑤___
		}
	}
}
int main()
{
	f(1);
	cout<<c<<endl;
}

程序分析:此程序是通过回溯法找到满足条件的1-9的三个宫格里面的数字,首先定义了两个数组a和b,其中a用于存放1-9的数,b用于标记是否已经使用过某个数。函数f用于递归地生成所有可能的排列。参数s表示当前要填入的位置。当s等于n+1时,表示已经生成了一个完整的排列。然后计算t1、t2和t3的值,并判断是否满足条件。如果满足条件,则输出t1、t2和t3,并将计数器c加1。在f函数中,通过for循环尝试将1-9的数填入当前位置s,如果某个数i没有被使用过,则将它填入a[s],并将b[i]标记为已使用。然后递归调用f函数继续填下一个位置s+1。递归回来后,需要将b[i]标记为未使用,以便后续的排列。

单选题

①处应该填

A. s==n+1
B. s==n
C. s<n
D. s>=n

答案:A

答案分析:此处要填的是完成了一次9个数字的排列,所以答案A

②处应该填

A. t3*2==t2&&t3*3==t1
B. t1*2==t2&&t2*3==t3
C. t1*3==t2&&t1*2==t3
D. t1*2==t2&&t1*3==t3

答案:D

答案分析:此处是满足第二行是第一行2倍,第三行是第一行三倍,所以答案D

③处应该填

A. a[c]=i;
B. a[s]=i;
C. a[i]=s;b[c]=i; 
D. b[s]=i;

答案:B

答案分析:此处是要将第s个位置上的数填上i,所以答案B

④处应该填

A. f(i+1);
B. f(s+1);
C. f(c+1);
D. f(c+i+1):

答案:B

答案分析:填完第s个数字后,往后填s+1个位置对应的数,所以答案B

⑤处应该填

A. a[s]=0;
B. f(s-1);
C. a[s]=i;
D. b[i]=0:

答案:D

答案分析:填完了数字,需要回溯,将i标记为未使用,所以答案D

第二题 拓扑排序

输人一张n节点m条边的有向图,用求该图的一个拓扑排序的方式判断该图是否存在有向环,若有拓扑排序输出拓扑排序,并输出“不存在有向环”,否则直接输出“存在有向环”。

输人:
第一行两个正整数n,m表示节点数和边数。
接下来 m行,每行2个正整数x,y表示节点 x->y 之间有一条边。
输出:
一个拓扑序:按拓扑序输出点的编号。若拓扑序不唯一,输出任意一个均可,并输出“存在有向环”。若无拓扑序,直接输出“不存在有向环”.

#include<iostream>
#include<algorithm>
#include<vector>
#include<stack>
#define N 1001
using namespace std;
int n,m,x,y;
vector<int>G[N];
stack<int>q;
int cnt[N],tpc;
bool pd()
{
	for(int i=l;i<=n;i++)
		if(__①__)q.push(i);
	while(!q.empty())
	{
		int u=q.top();
		q.pop();
		tpc++;
		cout<<u<<" ";
		for(int i=0;i<G[u].size();i++)
		{
			int v=G[u][i];
			__②__
			if(!cnt[v])__③__
		}
	}
	if(__④__)return 1;
	else return 0;
}

int main()
{
	cin>>n>>m;
	while(m--)
	{
		cin>>x>>y;
		G[x].push_back(y);
		__⑤__
	}
	if(pd())cout<<"存在有向环";
	else cout<<"不存在有向环";
}

程序分析:此程序的主要思路是使用拓扑排序来判断有向图是否存在环。

首先,定义了一个函数pd()用来进行拓扑排序和判断是否存在有向环。在pd()函数中,首先初始化了一个栈q和一个计数器tpc,用来存储拓扑排序的结果。然后,将所有入度为0的节点压入栈q中。接下来,利用栈q进行拓扑排序的过程,依次从栈中弹出节点u,将节点u输出,并将u的所有邻接节点的入度减1。然后,如果某个邻接节点的入度变为0,就将该节点压入栈q中。最后,判断tpc的值是否等于节点个数n,若相等则表示不存在有向环,否则存在有向环。

单选题

①处应该填

A. !cnt[i]
B. cnt[i]
C. cnt[i]=0
D. cnt[i]==1

答案:A

答案分析:此处就似乎将所有入读为0的节点压入栈q中;所以答案A

②处应该填

A. q.push(v);
B. q. pop( );
C. cnt[u]--;
D. cnt[v]--;

答案:D

答案分析:此处就是将相邻节点的入度减1,所以答案D

③处应该填

A. q.pop();
B. q.push(v);
C. tpc--;
D. tpc++;

答案:B

答案分析:此处就是将入度为0的节点压入栈中;所以答案B

④处应该填

A. tpc!=n
B. tpc==n
C. tpc==0
D. tpc!=0

答案:A

答案分析:这里双分支条件是计数器不等于输入n就表示存在有向环,否则就是不存在,所以答案A

⑤处应该填

A. cnt[x]++;
B. G[y].push(x)
C. cnt[y]++;
D. push_back(x)

答案:C

答案分析:此处是更新节点y的入度,所以答案C

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python输出字符 2022年12月青少年电子学会等级考试 中小学生python编程等级考试二级真题答案解析

目录 python输出字符 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序代码 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python输出字符 2022年12月 python编程等级考试级编程题 一、题目要求 …

《CSS 简易速速上手小册》第2章:CSS 布局与定位(2024 最新版)

文章目录 2.1 Flexbox&#xff1a;灵活的布局解决方案2.1.1 基础知识2.1.2 重点案例&#xff1a;创建一个响应式导航菜单2.1.3 拓展案例 1&#xff1a;卡片布局2.1.4 拓展案例 2&#xff1a;中心对齐的登录表单 2.2 Grid 布局&#xff1a;网格系统的魔力2.2.1 基础知识2.2.2 重…

渗透测试练习题解析 3(CTF web)

1、[网鼎杯 2020 朱雀组]phpweb 1 考点&#xff1a;反序列化漏洞利用 进入靶场&#xff0c;查看检查信息&#xff0c;发现存在两个参数 func 和 p 查看页面源代码 payload&#xff1a;funcfile_get_contents&pphp://filter/resourceindex.php 整理后&#xff0c;就是 PHP 代…

数据结构与算法:单链表

朋友们大家好&#xff0c;本节来到数据结构与算法的新内容&#xff1a;单链表 在上篇文章中&#xff0c;我们知道顺序表通常需要预分配一个固定大小的内存空间&#xff0c; 通常以二倍的大小进行增容&#xff0c;可能会造成空间的浪费&#xff0c;本篇文章我们介绍的链表可以解…

去除vue自带的边距

使用vue时发现总有去不掉的外边距&#xff0c;在index.vue里面怎样设置样式都不管用 查阅资料后发现要在vue项目自带的index.html文件内添加下面的样式代码才行 <style>*{margin: 0;padding: 0;}body,html{margin: 0;padding: 0;} </style>

二、DataX安装

DataX安装 一、简介二、系统要求三、部署 一、简介 官方地址&#xff1a;https://github.com/alibaba/DataX/blob/master/userGuid.md 二、系统要求 LinuxJDK(1.8以上&#xff0c;推荐1.8) Centos7.9的java1.8安装命令&#xff1a;yum install java-1.8.0-openjdk.x86_64 Py…

【新书推荐】7.6节 相对基址加变址寻址方式

本节内容&#xff1a;基址加变址寻址方式。 ■基址加变址寻址方式&#xff1a;指令操作数为内操作数&#xff0c;操作数地址使用[基址寄存器变址寄存器]表示。 7.6.1 基址加变址寻址方式 基址加变址寻址方式的操作数在存储器中&#xff0c;操作数的有效地址由基地址寄存器&am…

day 20(补2.5)

fread 函数&#xff1a; 今日练习 C语言面试题5道~ 1. static 有什么用途&#xff1f;&#xff08;请至少说明两种&#xff09; 1) 限制变量的作用域 2) 设置变量的存储域 2. 引用与指针有什么区别&#xff1f; 1) 引用必须被初始化&#xff0c;指针不必。 2) 引用初始…

幻兽帕鲁服务器原来的存档不想玩了,怎么清档?如何重来?

如果需要备份原存档的话&#xff0c;就先把存档导出来备份。或者手动去服务器文件里找到游戏存档文件夹&#xff0c;保存下载。 如无需备份原存档&#xff0c;则可以直接使用幻兽帕鲁应用模板&#xff0c;来重装服务器的操作系统。 方法很简单&#xff1a; 详细教程地…

mysql经典4张表问题

1.数据库表结构关联图 2.问题&#xff1a; 1、查询"01"课程比"02"课程成绩高的学生的信息及课程分数3.查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩4、查询名字中含有"风"字的学生信息5、查询课程名称为"数学"&…

网络协议与攻击模拟_17HTTPS 协议

HTTPShttpssl/tls 1、加密算法 2、PKI&#xff08;公钥基础设施&#xff09; 3、证书 4、部署HTTPS服务器 部署CA证书服务器 5、分析HTTPS流量 分析TLS的交互过程 一、HTTPS协议 在http的通道上增加了安全性&#xff0c;传输过程通过加密和身份认证来确保传输安全性 1、TLS …

【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱3(附带项目源码)

效果演示 文章目录 效果演示系列目录前言丢弃物品源码完结 系列目录 前言 欢迎来到【制作100个Unity游戏】系列&#xff01;本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第25篇中&#xff0c;我们将探索如何用unity制作一个3D背包、库存、制作、快捷栏、存…

netstat命令

netstat 是一个计算机网络命令行工具&#xff0c;用于显示网络连接、路由表和网络接口等网络相关信息。netstat 命令可以在各种操作系统上使用&#xff0c;包括 Windows、Linux 和 macOS 等。 在使用 netstat 命令时&#xff0c;可以提供不同的选项来显示不同类型的网络信息。…

助力智能化农田作物除草,基于轻量级YOLOv8n开发构建农田作物场景下玉米苗、杂草检测识别分析系统

在我们前面的系列博文中&#xff0c;关于田间作物场景下的作物、杂草检测已经有过相关的开发实践了&#xff0c;结合智能化的设备可以实现只能除草等操作&#xff0c;玉米作物场景下的杂草检测我们则少有涉及&#xff0c;这里本文的主要目的就是想要基于最新的YOLOv8下最轻量级…

微信问一问·流量赚钱专栏

微信问一问流量赚钱专栏 1493读者&#xff0c;104内容 看专栏解百惑&#xff0c;赚到钱 问一问免费涨粉利器 独家更新 100 篇「问一问」经验贴。带你入门&#xff0c;解惑&#xff0c;提效&#xff0c;涨粉&#xff0c;赚小钱 零成本单日公众号涨粉 1000 &#xff0c;专栏成…

《Java 简易速速上手小册》第9章:Java 开发工具和框架 (2024 最新版)

文章目录 9.1 Maven 和 Gradle - 构建与依赖管理的神兵利器9.1.1 基础知识9.1.2 重点案例&#xff1a;使用 Maven 构建 Spring Boot 应用9.1.3 拓展案例 1&#xff1a;使用 Gradle 构建多模块项目9.1.4 拓展案例 2&#xff1a;利用 Gradle Wrapper 确保构建的一致性 9.2 Spring…

【数据结构】哈希表的开散列和闭散列模拟

哈希思想 在顺序和树状结构中&#xff0c;元素的存储与其存储位置之间是没有对应关系&#xff0c;因此在查找一个元素时&#xff0c;必须要经过多次的比较。 顺序查找的时间复杂度为0(N)&#xff0c;树的查找时间复杂度为log(N)。 我们最希望的搜索方式&#xff1a;通过元素的…

计算x的平方根x含负数和复数cmath.sqrt(x)

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 计算x的平方根 x含负数和复数 cmath.sqrt(x) cmath.sqrt(-4)输出的结果是&#xff1f; import cmath import math a 4 print("【显示】a ",a) print("【执行】math.sqrt(a)&…

InstantBox:开箱即用的临时 Linux 环境

在云计算和虚拟化技术日益成熟的今天&#xff0c;我们有时需要一个快速、简单、临时的 Linux 环境来进行各种任务。这就是 InstantBox 的用武之地。 什么是 InstantBox&#xff1f; InstantBox 是一个开源项目&#xff0c;它可以快速启动临时的 Linux 系统&#xff0c;并提供…

HeidiSQL安装配置(基于小皮面板(phpstudy))连接MySQL

下载资源 对于这款图形化工具&#xff0c;博主建议通过小皮面板&#xff08;phpstudy&#xff09;来下载即可&#xff0c;也是防止你下载到钓鱼软件&#xff0c;小皮面板&#xff08;phpstudy&#xff09;如果你不懂是什么&#xff0c;请看下面链接这篇博客 第二篇&#xff1a;…