版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2025年新版南京邮电编程题库及答案题目1:学提供绩统计系统(C++)题目描述:某高校期末需要统计学生某门课程的总评成绩,总评由平时成绩(30%)、期中成绩(30%)、期末成绩(40%)组成。若平时、期中、期末任一成绩缺失(记为-1),则总评为0分。输入n个学生的信息(学号为8位数字串,平时、期中、期末成绩为整数),输出每个学生的总评成绩(保留1位小数),并按总评降序排序,总评相同则按学号升序排序。输入格式:第一行为整数n(1≤n≤100);接下来n行,每行包含一个8位数字串(学号)和三个整数(平时、期中、期末成绩)。输出格式:n行,每行包含学号和总评成绩(保留1位小数),按排序规则输出。解题思路:1.定义结构体`Student`,存储学号、平时、期中、期末成绩及总评成绩。2.遍历每个学生,若任一成绩为-1,总评设为0;否则按权重计算总评(平时×0.3+期中×0.3+期末×0.4)。3.使用`sort`函数排序,自定义比较规则:总评降序,总评相同则学号升序(字符串比较)。代码实现:```cppinclude<iostream>include<vector>include<string>include<algorithm>include<iomanip>usingnamespacestd;structStudent{stringid;intusual,mid,final;doubletotal;};boolcompare(constStudent&a,constStudent&b){if(a.total!=b.total)returna.total>b.total;returna.id<b.id;}intmain(){intn;cin>>n;vector<Student>students(n);for(inti=0;i<n;++i){cin>>students[i].id>>students[i].usual>>students[i].mid>>students[i].final;if(students[i].usual==-1||students[i].mid==-1||students[i].final==-1){students[i].total=0.0;}else{students[i].total=students[i].usual0.3+students[i].mid0.3+students[i].final0.4;}}sort(students.begin(),students.end(),compare);for(constauto&s:students){cout<<s.id<<""<<fixed<<setprecision(1)<<s.total<<endl;}return0;}```题目2:图书馆座位预约系统(Python)题目描述:图书馆有m排n列座位(编号1~m排,1~n列)。用户预约时输入学号(8位)和时间段[start,end)(0≤start<end≤24),系统需分配一个未被预约且时间段无冲突的座位。分配规则:优先选择排号最小的座位,同排则选择列号最小的座位。若无法分配,输出"NO"。需处理q个独立预约请求,已分配的座位在后续请求中不可用。输入格式:第一行包含三个整数m、n、q(1≤m,n≤20,1≤q≤50);接下来q行,每行包含学号(8位)、start、end。输出格式:每个请求输出一行,若成功分配则输出"排-列"(如"1-2"),否则输出"NO"。解题思路:1.用二维字典`seats`记录每个座位的已预约时间段(键为(排,列),值为时间段列表)。2.对每个请求,按排从小到大、列从小到大遍历所有座位。3.对每个座位,检查新时间段与所有已预约时间段是否冲突(即新区间的start≥已有区间的end或新区间的end≤已有区间的start)。若不冲突,则分配该座位,并记录新时间段。代码实现:```pythonm,n,q=map(int,input().split())seats={}键:(row,col),值:已预约的时间段列表[(s1,e1),(s2,e2)...]for_inrange(q):stu_id,start,end=input().split()start=int(start)end=int(end)allocated=False按排升序、列升序遍历座位forrowinrange(1,m+1):forcolinrange(1,n+1):key=(row,col)检查该座位是否已被预约过时间段ifkeynotinseats:seats[key]=[]conflict=Falsefor(s,e)inseats[key]:ifnot(end<=sorstart>=e):conflict=Truebreakifnotconflict:分配该座位seats[key].append((start,end))对时间段排序(非必要,但方便后续检查)seats[key].sort()print(f"{row}-{col}")allocated=Truebreakifallocated:breakifnotallocated:print("NO")```题目3:通信数据包校验和计算(C++)题目描述:通信数据包的校验和计算规则如下:1.输入为十六进制字符串(可能包含0-9、a-f、A-F),若长度为奇数,在末尾补'0'使长度为偶数。2.将字符串按每两个字符分割为一组(大端模式),每组转为16位无符号整数(如"1a"转为0x1a)。3.所有整数求和后对2^16取模,结果的低16位作为校验和。4.输出校验和的两位十六进制小写字符串(不足两位补前导0)。输入格式:一个十六进制字符串(长度≤1000)。输出格式:两位十六进制小写字符串。解题思路:1.处理输入字符串:转为小写,补0至偶数长度。2.每两个字符为一组,转为整数(如"1a"→0x1a=26)。3.求和后取模2^16(即保留低16位)。4.转为两位十六进制,补前导0。代码实现:```cppinclude<iostream>include<string>include<algorithm>include<iomanip>usingnamespacestd;inthexCharToInt(charc){if(c>='0'&&c<='9')returnc'0';if(c>='a'&&c<='f')return10+c'a';if(c>='A'&&c<='F')return10+c'A';return0;//非法字符默认0(题目假设输入合法)}intmain(){strings;cin>>s;//转为小写并补0transform(s.begin(),s.end(),s.begin(),::tolower);if(s.size()%2!=0)s+='0';//计算校验和unsignedintsum=0;for(inti=0;i<s.size();i+=2){charhigh=s[i];charlow=s[i+1];unsignedintnum=hexCharToInt(high)16+hexCharToInt(low);sum+=num;}sum%=(1<<16);//2^16取模//转为两位十六进制cout<<hex<<setw(2)<<setfill('0')<<(sum%256)<<endl;return0;}```题目4:校园快递路径优化(Python)题目描述:快递点需要将n个快递送到m个宿舍(编号1~m),每个快递有目标宿舍号。快递员每次最多带k个快递,路线为0(快递点)→a1→a2→…→ak→0,总距离为各段距离之和(0到a1,a1到a2,…,ak到0)。已知宿舍i到快递点的距离为d[i],宿舍间距离为|d[i]-d[j]|。求送完所有快递的最小总距离。输入格式:第一行n、m、k(1≤n≤1000,1≤m≤50,1≤k≤20);第二行m个整数d[1..m](d[i]≥0);第三行n个整数表示每个快递的目标宿舍号。解题思路:1.统计每个宿舍的快递数量`count[i]`,计算需要运送的次数`times[i]=ceil(count[i]/k)`。2.将宿舍按d[i]从小到大排序(假设d[i]表示离快递点的距离,排序后便于合并最远的宿舍)。3.每次运送尽可能多的快递(最多k个),且优先运送离快递点远的宿舍,因为合并运送时,总距离由最远宿舍决定(例如,运送宿舍A(d=5)和B(d=10),路线0→B→A→0的总距离为10+(10-5)+5=20,等价于2×10)。4.对排序后的宿舍,累加`times[i]`,每累计到k次时,总距离增加`2×当前最大d[i]`。代码实现:```pythonimportmathfromcollectionsimportdefaultdictn,m,k=map(int,input().split())d=list(map(int,input().split()))d[0]无意义,d[1..m]对应宿舍1~mexpress=list(map(int,input().split()))统计每个宿舍的快递数量count=defaultdict(int)fordorminexpress:count[dorm]+=1计算每个宿舍需要的次数(向上取整)times={}fordormincount:times[dorm]=math.ceil(count[dorm]/k)将宿舍按d从小到大排序(d[dorm-1]是宿舍dorm的距离,因为d的索引从0开始)sorted_dorms=sorted(times.keys(),key=lambdax:d[x-1])total_distance=0current_k=0max_d=0fordorminsorted_dorms:d_val=d[dorm-1]t=times[dorm]当前宿舍需要t次运送,每次最多贡献k个快递每次运送的最大距离是d_val,需要累加t次d_val2但如果可以合并到之前的批次中,可能更优?不,因为每次运送的最大距离由最远的宿舍决定因此直接累加t2d_valtotal_distance+=t2d_valprint(total_distance)```题目5:二叉树奇数路径和计数(C++)题目描述:给定二叉树的层序遍历序列(空节点用-1表示),找出所有从根到叶子节点的路径,满足:1.路径和等于给定目标值sum;2.路径中每个节点的值均为奇数。输出符合条件的路径数量。输入格式:第一行为二叉树的层序遍历序列(整数列表,-1表示空节点);第二行为整数sum。输出格式:一个整数(路径数量)。解题思路:1.构建二叉树:根据层序遍历序列,用数组模拟树结构(索引i的左子节点为2i+1,右子节点为2i+2)。2.递归遍历每个节点,记录当前路径和、路径中是否全为奇数。3.若当前节点是叶子节点(左右子节点均为空),且路径和等于sum,且全为奇数,则计数加1。代码实现:```cppinclude<iostream>include<vector>usingnamespacestd;intcount=0;voiddfs(constvector<int>&tree,intindex,intcurrent_sum,inttarget,boolall_odd){if(index>=tree.size()||tree[index]==-1)return;intval=tree[index];boolnew_all_odd=all_odd&&(val%2!=0);current_sum+=val;//判断是否是叶子节点(左右子节点均不存在或为空)intleft=2index+1;intright=2index+2;boolis_leaf=(left>=tree.size()||tree[left]==-1)&&(right>=tree.size()||tree[right]==-1);if(is_leaf){if(current_sum==target&&new_all_odd){::count++;}return;}//递归左右子树dfs(tree,left,current_sum,target,new_all_odd);dfs(tree,right,current_sum,target,new_all_odd);}intmain(){vector<int>tree;intnum;//读取层序遍历序列(假设输入以空格分隔)while(cin>>num){tree.push_back(num);if(cin.get()=='\n')break;}intsum;cin>>sum;if(tree.empty()||tree[0]==-1){//空树cout<<0<<endl;return0;}//初始时current_sum=0,all_odd=true(根节点未加入时,路径为空)dfs(tree,0,0,sum,true);cout<<::count<<endl;return0;}```题目6:字符串回文子序列计数(Python)题目描述:给定一个由小写字母组成的字符串s,统计其所有长度为偶数的回文子序列的数量。回文子序列定义为正读和反读相同的子序列(不要求连续),长度为偶数(如"aa"、"abba")。输入格式:一个字符串s(长度≤50)。输出格式:一个整数(回文子序列数量)。解题思路:1.动态规划:定义`dp[i][j]`为子串s[i..j]中长度为偶数的回文子序列数量。2.状态转移:若s[i]==s[j],则`dp[i][j]=dp[i+1][j]+dp[i][j-1]dp[i+1][j-1]+(1+dp[i+1][j-1])`(新增的回文子序列为s[i]与s[j]配对,加上i+1到j-1的所有回文子序列)。若s[i]!=s[j],则`dp[i][j]=dp[i+1][j]+dp[i][j-1]dp[i+1][j-1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 如何买毕业论文
- 安全生产奖励制度制定
- 2026年忻城县民政局公开招聘编外聘用工作人员备考题库及完整答案详解1套
- 2026年安徽工程大学MBA企业导师选聘与管理实施办法备考题库有答案详解
- 2026年中国民用航空飞行学院分院招聘17人备考题库及1套完整答案详解
- 2026年九江市专业森林消防支队(九江市综合应急救援支队)招聘10人备考题库附答案详解
- 安徽省定远重点中学2026届高三生物第一学期期末监测模拟试题含解析
- 2025年大姚县公安局公开招聘警务辅助人员备考题库(十七)带答案详解
- 2026年中能建华南电力装备有限公司招聘备考题库及参考答案详解1套
- 2026年承德医学院招聘备考题库完整答案详解
- 雅思2025年阅读真题解析试卷(含答案)
- 餐饮员工服务沟通技巧指导书
- 黑色三分钟1-12部事故类型及直接原因分析(新)
- 化学史简明教程 课件 第5-7章 有机化学的兴起 -现代化学的发展趋势
- 2025年高考真题-化学(四川卷) 含答案
- 学堂在线 雨课堂 学堂云 大数据机器学习 章节测试答案
- 2025年中国奢侈女鞋行业市场全景分析及前景机遇研判报告
- 七年级英语上册新教材解读课件(译林版2024)
- 煤矿机电设备检修标准及安全技术措施
- 工贸行业安全管理和企业现场常见隐患排查解读(1)精
- 中药鉴定学习题集全文档
评论
0/150
提交评论