版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2024年3月GESP编程能力认证C++等级考试七级真题(含答案和解析-在末尾)一、单选题(每题2分,共30分)。1.下列关于排序的说法,正确的是()。A.冒泡排序是最快的排序算法之一。B.快速排序通常是不稳定的。C.最差情况,N个元素做归并排序的时间复杂度为O(N)。D.以上均不正确。2.下面的程序属于哪种算法()。intpos[8];voidqueen(intn){for(inti=0;i<8;i++){pos[n]=i;boolattacked=false;for(intj=0;j<n;j++)if(pos[n]==pos[j]||pos[n]+n==pos[j]+j||pos[n]-n==pos[j]-j){attacked=true;break;}if(attacked)continue;if(n==7){return;}else{queen(n+1);}}}A.贪心算法B.动态规划C.深度优先搜索D.广度优先搜索3.下面有关C++类的说法,错误的是()。A.C++类对象销毁时,会执行析构函数。B.C++类可以通过定义构造函数实现自动类型转换。C.C++类可以通过重载[]运算符实现通过给定下标访问数组成员的元素。D.C++类可以包含任意类型的成员变量。4.一个连通的简单无向图,共有28条边,则该图至少有()个顶点。A.6B.7C.8D.95.以下哪个方案不能合理解决或缓解哈希表冲突()。A.在每个哈希表项处,使用单链表管理该表项的冲突元素。B.建立额外的单链表,用来管理所有发生冲突的元素。C.使用不同的哈希函数再建立一个哈希表,用来管理所有发生冲突的元素。D.用新元素覆盖发生冲突的哈希表项。6.已知一颗二叉树的中序遍历序列为{CFBAEDG},后序遍历序列为{FCBEGDA},则下列说法中正确的是()。A.该树是平衡二叉树。B.该树的高为4。C.该树有4个叶节点。D.以上说法都不对。7.以下关于二叉排序树的说法,正确的是()。A.二叉排序树的中序遍历序列一定是有序的。B.在含n个节点的二叉排序树中查找元素,最差情况的时间复杂度为O(log(n))。C.二叉排序树一定是二叉平衡树。D.以上说法都不对。8.已知x为double类型的变量,且值大于0,则下列表达式的值一定大于0的是()。A.sin(x)/xB.exp(x)-xC.log(x)-xD.x*x-x9.一个简单有向图有10个结点、30条边。再增加多少条边可以成为完全图()。A.60B.70C.15D.2010.下列选项中,哪个可能是下图的深度优先遍历序列()。A.8,6,1,5,3,4,2,10,7,12,11,9。B.7,8,6,4,2,1,5,3,12,9,11,10。C.8,10,12,9,11,4,5,3,2,1,6,7。D.7,8,10,9,11,12,4,5,1,2,3,6。11.下面schedule函数的时间复杂度为()。#include<algorithm>usingnamespacestd;structactivity{intid,start,end;};boolcompare(activitya,activityb){returna.end<b.end;}intschedule(intn,activity*p){sort(p,p+n,compare);intcnt=0,end=0;for(inti=0;i<n;i++){if(p[i].start>=end){end=p[i].end;cnt++;}}returncnt;}A.O(n)B.O(log(n))C.O(nlog(n))D.O(n²)12.下面search函数的平均时间复杂度为()。intsearch(intn,int*p,inttarget){intlow=0,high=n;while(low<=high){intmiddle=(low+high)/2;if(target==p[middle]){returnmiddle;}elseif(target>p[middle]){low=middle+1;}else{high=middle-1;}}return-1;}A.O(n)B.O(log(n))C.O(1)D.可能无法返回13.下面count_triple函数的时间复杂度为()。intcount_triple(intn){intcnt=0;for(inta=1;a<=n;a++)for(intb=a;a+b<=n;b++)for(intc=b;a+b+c<=n;c++)if(a*a+b*b==c*c)cnt++;returncnt;}A.O(N)B.O(N²)C.O(N3)D.O(N4)14.下面程序的输出为()。#include<iostream>usingnamespacestd;intdown(intn){if(n<=1)returnn;returndown(n-1)+down(n-2)+down(n-3);}intmain(){cout<<down(6)<<endl;return0;}A.6B.13C.20D.无法正常结束。15.下面的程序使用邻接矩阵表达的带权无向图,则从顶点0到顶点3的最短距离为()。A.6B.7C.8D.9二、判断题(每题2分,共20分)。16.祖冲之是南北朝时期杰出的数学家、天文学家,其主要贡献在数学、天文历法和机械制造三方面。他首次将“圆周率”精算到小数第七位,即在3.1415926和3.1415927之间()。A.正确B.错误17.题C++语言中,表达式2^3的结果类型为int、值为8。()。A.正确B.错误18.一棵有N个节点的完全二叉树,则树的深度为。()。A.正确B.错误19.能用动态规划解决的问题,一般也可以用贪心法解决,但动态规划的效率更高()。A.正确B.错误20.使用math.h或cmath头文件中的正弦函数,表达式sin(30)的结果类型为double、值约为0.5。()。A.正确B.错误21.要求出简单有向图中从顶点A到顶点B的最短路径,在深度优先搜索和广度优先搜索中选择,广度优先更适合()。A.正确B.错误22.某N个表项的哈希表,在发生哈希函数冲突时采用向后寻找空位的方法解决冲突。其查找操作的平均时间复杂度为O(1),即使当该哈希表的每个表项都有元素时,查找操作的平均时间复杂度仍为O(1)。()。A.正确B.错误23.动态规划有递推实现和递归实现,有时两种实现的时间复杂度不同()。A.正确B.错误24.围棋游戏中,判断落下一枚棋子后是否会提掉对方的子,可以使用泛洪算法来实现()。A.正确B.错误25.类B继承了抽象类A,但未实现类A中的纯虚函数f,则类B不能直接实例化()。A.正确B.错误三、编程题(每题25分,共50分)。26.试题名称:交流问题。问题描述:来自2所学校A校、B校的N名同学相聚在一起相互交流,方便起见,我们把这些同学从1至N编号。他们共进行了M次交流,第i次交流中,编号为ui,vi的同学相互探讨了他们感兴趣的话题,并结交成为了新的朋友。由于这次交流会的目的是促进两校友谊,因此只有不同学校的同学之间会交流,同校同学并不会相互交流。作为A校顾问,你对B校的规模非常感兴趣,你希望求出B校至少有几名同学、至多有几名同学。输入描述:第一行两个正整数N,M,表示同学的人数,交流的次数。接下来M行,每行两个正整数ui,vi,表示一次交流。题目保证输入合法,即交流一定是跨校开展的。输出描述:输出一行两个整数,用单个空格隔开,分别表示B校至少有几名同学、至多有几名同学。特别提醒:在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任何提示信息。样例输入1。样例输出1。样例输入2。样例输出2。数据规模:对于30的测试点,保证N≤17,M≤50。对于60的测试点,保证N≤500,M≤2000。对于100的测试点,保证N≤105,M<2×105。27.试题名称:俄罗斯方块。题面描述:小杨同学用不同种类的俄罗斯方块填满了一个大小为n×m的网格图。网格图由n×m个带颜色方块构成。小杨同学现在将这个网格图交给了你,请你计算出网格图中俄罗斯方块的种类数。如果两个同色方块是四连通(即上下左右四个相邻的位置)的,则称两个同色方块直接连通;若两个同色方块同时与另一个同色方块直接或间接连通,则称两个同色方块间接连通。一个俄罗斯方块由一个方块和所有与其直接或间接连通的同色方块组成。定义两个俄罗斯方块的种类相同当且仅当通过平移其中一个俄罗斯方块可以和另一个俄罗斯方块重合;如果两个俄罗斯方块颜色不同,仍然视为同一种俄罗斯方块。例如,在如下情况中,方块1和方块2是同一种俄罗斯方块,而方块1和方块3不是同一种俄罗斯方块。输入格式:第一行包含两个正整数n,m,表示网格图的大小。对于之后n行,第i行包含m个正整数a1,ai2,…,aim,表示该行m个方块的颜色。输出格式:输出一个非负整数,表示俄罗斯方块的种类数。样例1。样例解释:7种类型的俄罗斯方块如下。数据范围。对于全部数据,保证有1≤n,m≤500,0≤aij≤500²。答案解析如下。1.答案:B。解析:冒泡排序时间复杂度为O(n2),不是最快的排序算法,归并排序的时间复杂度为O(nlogn),快速排序是不稳定的排序算法。2.答案:C。解析:代码采用递归的写法,每次从queue(n)转移到queue(n+1),符合深度优先搜索的代码风格。3.答案:D。解析:C++类不能包含自身,也不能包含定义在它下面的类。4.答案:C。解析:n个点的连通的简单无向图至多有n*(n-1)/2条边,当n=8时,8*7/2=28,故选C。5.答案:D。解析:不能使用新元素直接覆盖发生冲突的哈希表项,这样会造成之前的元素丢失。6.答案:B。解析:首先根据中序遍历和后序遍历将树构造出来。选项A,C显然错误,选项B正确,树高为4。7.答案:A。解析:二叉排序树的左子树小于等于根,右子树大于等于根,而中序遍历按照左中右的顺序进行遍历,所以得到的序列一定是有序的,A正确。选项B错误,最差情况n个节点的每个右子树均为空,此时查找的时间复杂度为O(n)。选项C错误,比如第6题图中的树不是二叉平衡树,但可以按中序遍历由小到大填入数字形成二叉排序树。8.答案:B。解析:exp(x)是ex,而指数函数增长的速度非常快,当x>0时ex一定大于x,选项A当π<x<2π时,sin(x)<0,选项C,当x=e时,log(x)-x=1-e<0,选项D,当x=0.5时,x*x-x=-0.25。9.答案:A。解析:10个点的有向完全图共有10*9=90条边,需要再增加60条边。10.答案:C。解析:选项A,10后面不能接7,选项B,3后面不能接12,选项D,10后面不能接9。11.答案:C。解析:schedule函数由两部分组成,一个是sort排序,另一个是遍历p数组,sort复杂度为O(nlogn),遍历复杂度为O(n),总复杂度为O(nlogn)。12.答案:B。解析:容易发现代码是在进行二分查找,每次查找区间减半,所以复杂度为O(logn)。13.答案:C。解析:三重for循环,每个循环的上界都是n,总复杂度为O(N3)。14.答案:A。解析:使用递推的方式,从小到大依次计算出down(1~6)分别为1,0,1,2,3,6,故选A。15.答案:B。解析:可以从0->1->2->3,距离为2+1+4=7。16.答案:正确。解析:祖冲之发现了圆周率,并计算到了小数第七位。17.答案:错误。解析:2^3=1。18.答案:正确。解析:一棵深度为k的有n个结点的二叉树,对树中的结点按从上至下、从左到右的顺序进行编号,如果编号为i(1≤i≤n)的结点与满二叉树中编号为i的结点在二叉树中的位置相同,则这棵二叉树称为完全二叉树。具有n个结点的完全二叉树的深度为[log2(n)]+1。19.答案:错误。解析:能用动态规划解决的问题,不一定可以⽤贪⼼法解决。20.答案:错误。解析:sin()函数的参数是弧度而不是角度。21.答案:正确。解析:广度优先搜索第一次遍历到一个点时,经过的路径长度就是最短的,广度优先搜索更适合于查找最短路径。22.答案:错误。解析:在哈希表中查找某个元素时,如果该元素的哈希值所在的位置不是该元素,则需要往后进行比较,查找复杂度会超过O(1)。特别的,当该哈希表的每个表项都有元素时,如果待查找元素不在该哈希表中,时间复杂度可以达到O(n)。23.答案:正确。解析:动态规划的递推实现可能会导致重复计算,从而提高时间复杂度。动态规划的递归实现有时会由于自顶向下比自底向上更难(例如,自顶向下需要找到所有因数,自底向上只需要找到所有倍数),从而提高时间复杂度。24.答案:正确。解析:假设落下的是白子,则可以从该子周围四个有黑子的位置分别开始进行泛洪算法,若某个区间全部是黑子、没有空位,则该区间需要被提掉。25.答案:正确。解析:因为类B没有实现类A中的纯虚函数f,若将B实例化,则B没有办法执行函数f。26.参考程序。#include<iostream>#include<vector>#include<unordered_map>usingnamespacestd;voiddfs(vector<vector<int>>&graph,intnode,vector<int>&colors,int*color_cnt,intcurr_color){colors[node]=curr_color;color_cnt[curr_color]++;for(intneighbor:graph[node]){if(colors[neighbor]==-1){dfs(graph,neighbor,colors,color_cnt,curr_color^1);}}}pair<int,int>find_b_school_students(intN,vector<pair<int,int>>&connections){vector<vector<int>>graph(N+1);for(constauto&connection:connections){graph[connection.first].push_back(connection.second);graph[connection.second].push_back(connection.first);}vector<int>colors(N+1,-1);intmin_ans=0;for(inti=1;i<=N;++i){if(colors[i]==-1){intcolor_cnt[2]={0,0};dfs(graph,i,colors,color_cnt,0);min_ans+=min(color_cnt[0],color_cnt[1]);}}returnmake_pair(min_ans,N-min_ans);}intmain(){intN,M;cin>>N>>M;vector<pair<int,int>>connections(M);for(inti=0;i<M;++i){cin>>connections[i].first>>connections[i].second;}pair<int,int>b_students=find_b_school_students(N,connections);cout<<b_students.first<<""<<b_students.second<<endl;return0;}27.参考程序。#include<cstdio>#include<algorithm>#include<map>usingnamespacestd;constintN=505;intn,m;intval[N][N];intvis[N][N];intxmin,xmax,ymin,ymax;intposx[N*N],posy[N*N],cnt;intidx[N*N];boolisend[3*N*N];map<int,int>ch[3*N*N];introot,ncnt;intans;voiddfs(intx,inty,intc){if(x<1||x>n||y<1||y>m)return;if(vis[x][y])return;if(val[x][y]!=c)return;vis[x][y]=1;xmin=min(xmin,x),xmax=max(xmax,x);ymin=min(ymin,y),ymax=max(ymax,y);posx[++cnt]=x;posy[cn
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 街道办创业补贴申领审核延期情况说明
- 电解槽计算机监控工安全文明测试考核试卷含答案
- 球网制作工操作管理水平考核试卷含答案
- 动态检车员岗前岗中考核试卷含答案
- 标本员岗前基础综合考核试卷含答案
- 再生物资挑选工持续改进测试考核试卷含答案
- 群众文化指导员岗前安全文明考核试卷含答案
- 自动相关监视系统机务员操作知识测试考核试卷含答案
- 基本照明电路-电工基础课件
- 飞机型架装配工标准化测试考核试卷含答案
- 系统可靠性方案
- 有限空间作业安全告知
- 主要通风更换方案及安全技术措施
- xfd1h2hs型踏面制动单元大修
- 钱梁实秋优秀课件
- 预防接种妈妈课堂课件
- RB/T 019-2019实验动物设施性能及环境参数验证程序指南
- 《钢结构工程施工员培训教材》
- GB/T 18993.1-2020冷热水用氯化聚氯乙烯(PVC-C)管道系统第1部分:总则
- GB/T 1406.1-2008灯头的型式和尺寸第1部分:螺口式灯头
- GB 17840-1999防弹玻璃
评论
0/150
提交评论