news 2026/9/30 14:35:55

OJ刷题小结(12.13~12.14)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OJ刷题小结(12.13~12.14)

题目1:求n个实数去掉最大最小值后的平均值(快乐刷题周末B)

问题:

思路:

找到最大值最小值的下标,将0赋值给该下标对应的数组元素,再遍历数组,将所有元素相加,最后/(n-2)

代码:

#include<stdio.h> #include<stdlib.h> int main(){ int n; scanf("%d",&n); float *num=malloc(sizeof(int)*n); for(int i=0;i<n;i++){ scanf("%f",&num[i]); } float ave,min=num[0],max=num[0],sum=0; int idx_min=0,idx_max=0; for(int i=1;i<n;i++){ if(num[i]<min){ min=num[i]; idx_min=i; } if(num[i]>max){ max=num[i]; idx_max=i; } } num[idx_max]=0;num[idx_min]=0; for(int i=0;i<n;i++){ sum+=num[i]; } ave=sum/(n-2); printf("%.2f",ave); return 0; }

题目2:萝卜的冒泡排序(快乐刷题周末C)

问题:

思路:

冒泡排序都很熟悉了,但这题新出现了一个规则:如果存在相同的数,那么出现较早的那个数就排在后面。

错误想法:只改变第二个for循环中的if语句交换条件,num[j]>num[j+1]改为num[j]>=num[j+1]

错误原因:冒泡排序过程中,元素的位置不断变化,原始下标信息会丢失。当相邻元素相等时,我们无法通过索引直接判断到底哪个元素是先出现的

因此我们必须用idx[]记录每个元素的初始下标,元素交换的同时,让初始下标也跟着交换,保证元素与初始下标保持一致。交换条件改为num[j]>num[j+1]||(num[j]==num[j+1]&&idx[j]<idx[j+1])

代码:

#include<stdio.h> #include<stdlib.h> int main(){ int n; scanf("%d",&n); int num[100]; int idx[100]; for(int i=0;i<n;i++){ scanf("%d",&num[i]); idx[i]=i; } int count=0; for(int i=0;i<n-1;i++){ for(int j=0;j<n-1-i;j++){ if(num[j]>num[j+1]||(num[j]==num[j+1]&&idx[j]<idx[j+1])){ int t=num[j]; num[j]=num[j+1]; num[j+1]=t; int idx_t=idx[j]; idx[j]=idx[j+1]; idx[j+1]=idx_t; count++; } } } printf("%d\n",count); return 0; }

题目3:智将点兵(快乐刷题周末E)

问题:

思路:

数字在100以内,较小,可以从i=10开始暴力循环一个个判断i是否同时满足%3==a、%5==、%7==c,是的话则输出i,并将1赋值给变量is表示有解,跳出循环;不是的话is=0,输出No answer

代码:

#include<stdio.h> #include<stdlib.h> int main(){ int a,b,c; int is=0; scanf("%d %d %d",&a,&b,&c); for(int i=10;i<=100;i++){ if(i%3==a&&i%5==b&&i%7==c){ printf("%d",i); is=1; break; } } if(!is){ printf("No answer"); } return 0; }

题目4:密码发生器(快乐刷题周末F)

问题:

思路:

将输入字符串按位置%6 分成 6 组,外层for循环控制分组编号i(0~5)

内层for循环对每组字符的 ASCII 值求和,用num[i]储存

再用do-while语句嵌套将每个num[i]通过“各个位数相加”压缩成一位数字(数字根)

最终输出 6 位数字作为密码

代码:

#include<stdio.h> #include<stdlib.h> #include<string.h> int main(){ int n; scanf("%d",&n); while(n--){ char str[100]; scanf("%s",str); int num[6]={0}; for(int i=0;i<6;i++){ for(int j=i;j<strlen(str);j+=6){ num[i]+=str[j]; } // printf("%d ",num[i]); do{ int digit=0; while(num[i]>0){ digit+=num[i]%10; num[i]/=10; } num[i]=digit; } while(num[i]>=10); printf("%d",num[i]); } printf("\n"); } return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/29 8:55:13

【专科生必看】查重率90%?AI痕迹99.8%?别慌!Paperzz三招教你3元搞定降重+降AIGC,导师都说“这孩子真会用工具”!

Paperzz-AI官网免费论文查重复率AIGC检测/开题报告/文献综述/论文初稿 https://www.paperzz.cc/weighthttps://www.paperzz.cc/weight 副标题&#xff1a; 专科论文不用熬通宵&#xff01;只需上传文档→选“智能降重”或“降AIGC”→等10分钟&#xff0c;重复率从90%降到8%&am…

作者头像 李华
网站建设 2026/9/29 7:59:44

DBO-LSTM预测模型:含注释、易替换数据的优化时间序列预测模型

DBO-LSTM预测模型&#xff0c;DBO优化LSTM的时间序列预测模型&#xff0c;有注释&#xff0c;替换数据就可以运行&#xff0c;全部自己写的&#xff0c;注释为中文&#xff0c;方便修改&#xff0c;有与基础版LSTM的对比结果图与误差对比图。 很适合同学们学习与绘图 最近在研…

作者头像 李华
网站建设 2026/9/30 13:33:00

小型无人机轻量化,提升续航的几种方法

小型无人机减重并提升续航能力&#xff0c;需要从机身结构、核心部件、动力系统、负载配置、飞行策略五个核心维度系统性优化&#xff0c;结合激光雷达&#xff08;Mid360&#xff09;减重改造技术&#xff0c;还可以针对性匹配无人机的负载轻量化需求&#xff0c;具体方案如下…

作者头像 李华
网站建设 2026/9/30 4:02:12

【LLM学习】九、MCP深度解析

本期对MCP进行深入解析&#xff0c;MCP的最小应用回顾往期内容&#xff1a; 【LLM学习】【Ollama】四、MCP【LLM学习】【Ollama】五、MCP进阶 一、MCP 是什么&#xff1f;—— 从行业痛点看协议价值​ 在深入技术细节前&#xff0c;我们先明确 MCP 的核心定位&#xff1a;MC…

作者头像 李华
网站建设 2026/9/30 9:56:53

基于VUE的首选旅游网站[VUE]-计算机毕业设计源码+LW文档

摘要&#xff1a;随着互联网技术的飞速发展和人们旅游需求的日益增长&#xff0c;旅游网站在旅游行业中扮演着越来越重要的角色。本文旨在设计一个基于VUE框架的首选旅游网站&#xff0c;详细阐述其需求分析、技术选型、系统架构设计、功能模块设计以及具体实现过程。该网站实现…

作者头像 李华
网站建设 2026/9/30 12:14:45

测试可编程运放 MCP6S21

使用MCP6S22检测导航信号特性测试 **AD\Test\2025\December\TestMCP6S21STG8SOP8.SchDoc *** 增益可编程放大器MCP6S2101 MCP6S21测试特性 一、背景简介 之前测试了增益可编程运放 MCP6S22&#xff0c;  现在购买的 MCP6S21 芯片到货了&#xff0c; 它内部运放具有信号参考地…

作者头像 李华