版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
保研计算机复试机试真题(含详细答案解析)这套机试题适配985/211计算机、软工、网安专业保研复试考核难度,共4道编程题,涵盖保研机试高频考点:基础模拟、贪心算法、动态规划、字符串处理。题目难度梯度合理,贴合高校真实复试出题风格,代码可直接编译运行,解析通俗易懂,适合复试刷题复盘。考试说明:编程语言不限(本题统一使用C++),无输入输出格式错误、代码运行通过所有测试点即为满分。第一题:整数数位求和(基础模拟·15分)题目描述输入一个不超过10^9的正整数,计算该整数每一位数字的累加和。例如输入123,输出6(1+2+3=6)。输入格式一行一个正整数n输出格式一行一个整数,表示数位累加和样例输入1234样例输出10解题思路本题为基础模拟题,核心思路是逐位拆解数字。通过循环每次取数字的个位(对10取余),将数值累加,再将数字除以10去掉个位,重复操作直至数字变为0,最后输出累加结果。该方法时间复杂度为O(logn),效率极高,可适配题目最大数据范围。完整代码cpp
#include<iostream>
usingnamespacestd;
intmain(){
intn;
cin>>n;
intsum=0;
while(n>0){
sum+=n%10;
n=n/10;
}
cout<<sum<<endl;
return0;
}答案解析以样例输入1234为例:第一次循环取个位4,sum=4,n变为123;第二次取个位3,sum=7,n变为12;第三次取个位2,sum=9,n变为1;第四次取个位1,sum=10,n变为0,循环结束。最终输出10,与样例结果一致。代码逻辑简洁,无边界问题,可处理所有合法正整数输入。第二题:区间选点问题(贪心算法·25分)题目描述给定n个闭区间[ai,bi],请选择最少的点,使得每个区间内至少包含一个选中的点。输出最少需要选择的点数。输入格式第一行输入整数n(1≤n≤1000),表示区间个数;接下来n行,每行两个整数ai、bi,表示区间的左右端点(-10^5≤ai≤bi≤10^5)。输出格式一行一个整数,表示最少选点数量样例输入3
13
25
46样例输出2解题思路本题是保研机试经典贪心模板题。最优策略为:将所有区间按照右端点从小到大排序,每次优先选择当前区间的右端点作为选中点,后续所有包含该点的区间都可以直接覆盖,无需重复选点。以此遍历所有区间,统计选点总数即可。该贪心策略可保证局部最优推导出全局最优,是区间选点问题的标准解法。完整代码cpp
#include<iostream>
#include<algorithm>
usingnamespacestd;
//定义区间结构体
structInterval{
intl,r;
};
//按区间右端点升序排序
boolcmp(Intervala,Intervalb){
returna.r<b.r;
}
intmain(){
intn;
cin>>n;
Intervalarr[1005];
for(inti=0;i<n;i++){
cin>>arr[i].l>>arr[i].r;
}
sort(arr,arr+n,cmp);
intres=0;
intlast=-1e9;//记录上一个选中的点
for(inti=0;i<n;i++){
//当前区间不包含上一个选中的点,更新选点
if(arr[i].l>last){
res++;
last=arr[i].r;
}
}
cout<<res<<endl;
return0;
}答案解析样例三个区间排序后顺序为:[1,3]、[2,5]、[4,6]。第一次选中3,可覆盖前两个区间;第三个区间[4,6]不包含3,再次选中6,总点数为2,与样例输出一致。该解法时间复杂度由排序决定,为O(nlogn),可轻松应对题目数据范围。第三题:最长上升子序列(动态规划·30分)题目描述给定一个长度为n的整数序列,找出其中最长的严格上升子序列的长度。子序列不要求连续,但必须保持元素相对顺序。输入格式第一行输入整数n(1≤n≤1000),第二行输入n个整数,表示序列元素。输出格式一行一个整数,表示最长严格上升子序列的长度样例输入6
132475样例输出4解题思路本题是动态规划经典必考题型。定义dp[i]表示以第i个元素结尾的最长上升子序列长度。初始状态下,每个元素自身可构成一个长度为1的子序列,因此dp数组初始值全为1。状态转移方程:遍历每个位置i,再遍历i之前的所有位置j,若序列中a[i]>a[j],说明a[i]可以接在a[j]后形成更长的上升子序列,此时更新dp[i]=max(dp[i],dp[j]+1)。最终dp数组中的最大值即为答案。完整代码cpp
#include<iostream>
#include<algorithm>
usingnamespacestd;
inta[1005];
intdp[1005];
intmain(){
intn;
cin>>n;
for(inti=0;i<n;i++){
cin>>a[i];
dp[i]=1;//初始化
}
intans=1;
for(inti=1;i<n;i++){
for(intj=0;j<i;j++){
if(a[i]>a[j]){
dp[i]=max(dp[i],dp[j]+1);
}
}
ans=max(ans,dp[i]);
}
cout<<ans<<endl;
return0;
}答案解析样例序列为[1,3,2,4,7,5],对应的dp数组推演结果为:dp[0]=1、dp[1]=2、dp[2]=2、dp[3]=3、dp[4]=4、dp[5]=4。最大值为4,对应的最长上升子序列为[1,3,4,7]或[1,2,4,7],长度均为4,符合样例输出。该DP解法思路直白,适合复试基础考核,数据范围内运行稳定。第四题:单词反转(字符串处理·30分)题目描述输入一句英文句子,句子中仅包含小写字母和空格,单词之间用单个空格分隔。要求将句子中的每个单词单独反转,单词相对顺序不变,输出处理后的句子。输入格式一行字符串(长度不超过1000)输出格式一行处理后的字符串样例输入helloworld样例输出ollehdlrow解题思路核心思路:以空格为分隔符,逐个截取句子中的单词,对每个单词进行首尾反转,再将反转后的单词按原顺序拼接,单词之间保留单个空格。具体实现时,通过双指针定位每个单词的起始和结束位置,遍历交换字符完成反转,遍历整句直至所有单词处理完毕。完整代码cpp
#include<iostream>
#include<string>
#include<algorithm>
usingnamespacestd;
intmain(){
strings;
//读取整行字符串(包含空格)
getline(cin,s);
intn=s.size();
intl=0;
for(intr=0;r<=n;r++){
//遇到空格或末尾,反转当前单词
if(s[r]==''||r==n){
reverse(s.begin()+l,s.begin()+r);
l=r+1;
}
}
cout<<s<<endl;
return0;
}答案解析样例输入中第一个单词hello被反转为olleh,第二个单词world被反转为dlrow,单词顺序不变,拼接后输出结果与
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 播音主持备稿六步课件
- 保育员手册课件
- (2026版)述职报告(科主任)
- 员工情绪管理培训
- 农产品质量安全重金属污染
- 北师大版六年级下册方程复习课件
- 初级药师考试心得基础知识与专业实践能力部分
- 光学成像系统的传递函数
- Python数据挖掘项目化教程(微课版)教案 基础分析模块:电影数据分析与预测
- 《连续铸钢》课件
- 2027年新版《校园安全教育》课件 专题二
- 2026智慧水电厂安全生产管控一体化建设方案(第四册共七册)
- 2026年建筑行业数字孪生技术应用报告
- 2026年北京市检察院公益诉讼检察官业务竞赛真题及答案解析
- 2026云南省政府采购评审专家考试历年参考题库含答案详解
- T/CI 1107-2025经颅直流电刺激仪
- T/CI 1074-2025高密度聚乙烯(HDPE)实壁增强塑料顶管
- 第三单元达标测试卷(试卷)2026-2027学年六年级数学上册人教版(含答案)
- 防雷安全管理台账(全套完整版)
- 2025版胸痛中心规范化应用主要心血管生物标志物专家共识课件
- 2026年天津市专业技术人员继续教育公需课答案
评论
0/150
提交评论