全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之分支结构(实战项目二)

server/2024/12/25 21:09:10/

一、最值问题

利用分支结构可以依据具体条件去做决策,通过两个数的比较可以确定这两个数的大小关系,那么三个数也可以通过比较确定其大小关系。

实战训练1—输出最小数

问题描述:

输入三个整数,输出最小的数。

输入格式:

一行三个整数a,b,c,数与数之间用空格隔开。

输出格式:

一行一个整数,即最小的整数。

输入及输出样例:

输入样例1

输出样例1

3 16 1

1

输入样例2

输出样例2

46 10 23 

10

问题分析:

对于该问题,在这里提供三种解题方式:

解法1:只有一个整数时,知道这个整数就是最小值;如果有两个整数a和b,那么通过关系运算符和if语句,可以判断a和b的大小;如果有三个整数a、b和c,那么最小数有三种情况:若a<b且a<c,那么a就是最小值;若b<a且b<c,那么b就是最小值;若c<a且c<b,那么c就是最小值。具体程序代码如下:


#include<bits/stdc++.h>
using namespace std;
int main() {int a,b,c,minv;//定义变量a、b、c,以及最小值变量minvcin>>a>>b>>c;//输入a、b和cif(a<b && a<c){//若a<b且a<c,那么a就是最小值minv = a;}if(b<a && b<c){//若b<a且b<c,那么b就是最小值minv = b;} if(c<a && c<b){//若c<b且c<a,那么c就是最小值minv = c;}cout<<minv<<endl;return 0;
}

解法2:先将a和b进行比较,得到a和b两个数中的最小值,将最小值赋值给minv,然后将minv和c进行比较,如果c比minv要小,那么将c的值赋值给minv,否则minv保持不变,这样通过两次比较就得到了三个数中的最小值,主要思想是通过比较逐步将求解范围变小,这也是在C++编程中常用的方式,具体程序代码如下:


#include<bits/stdc++.h>
using namespace std;
int main() {int a,b,c,minv;//定义变量a、b、c,以及最小值变量minvcin>>a>>b>>c;//输入a、b和cif(a<b ){//将a和b进行比较,如果a<b为真, minv = a;//将a赋值给minv }else{//否则将b赋值给minv minv = b;}if(c<minv){//若c<minv,那么c就是最小值minv = c;//将c赋值给minv } cout<<minv<<endl;return 0;
}

解法3:借鉴打擂台的思想,如果只有一个整数a,a为擂主,那么最小值就是a;b来了之后,如果将擂主a打败了,那么b称为新的擂主,最小值为b,否则擂主仍为a,a还是最小值;紧接着c来挑战擂主,如果将擂主打败,c称为新的擂主,c成为最小值,否则擂主仍为之前的擂主,具体程序代码如下:


#include<bits/stdc++.h>
using namespace std;
int main() {int a,b,c,minv;//定义变量a、b、c,以及最小值变量minvcin>>a>>b>>c;//输入a、b和cminv = a; //先假设最小值为a,即a为擂主 if(b<a){// b打败擂主minv,b是新的擂主 minv = b;//将b赋值给minv }if(c<minv){//c来打擂,c打败擂主minv,c成为新的擂主 minv = c;//将c赋值给minv } cout<<minv<<endl;return 0;
}

这三种不同的解法,代表了三种不同的程序设计思想,如果涉及n个数据的求解(n很大),那么if语句便不再适用,这时需要学习新的知识——下一阶段的“循环”。

二、简单排序

比拼之下见高低。通过不停地比较,可以知道一些数据的位次,这就是排序。虽然利用if语句实现排序的局限性很大,但是其传达的程序设计思想应用很广泛。

实战训练2—三个数排序

问题描述:

试编一程序,输入三个整数,对这三个整数进行排序,由从小到大顺序输出。

输入格式:

一行三个整数a,b,c,中间用空格隔开。

输出格式:

一行三个整数由小到大排列,中间用空格隔开。

输入及输出样例:

输入样例1

输出样例1

3 16 1

1 3 16

输入样例2

输出样例2

46 10 23 

10 23 46

问题分析:

可以借鉴实战训练1求解最小值的思想,先让a与b进行比较,如果a比b大,则交换a和b;在将a和c进行比较,如果a比c大,则交换a和c,这样a就存储了这三个数中的最小值;接下来比较b和c的值,如果b大于c,则交换b和c,这样b中存储了次小值,c中存储了这三个数的最大值,这样三个数就完成了排序,具体程序代码如下:


#include<bits/stdc++.h>
using namespace std;
int main() {int a,b,c;//定义变量a、b、ccin>>a>>b>>c;//输入a、b和cif(a>b){//比较a和b的值,a的值比b的值大 ,交换a和b int tmp = a;a = b;b = tmp; } if(a>c){//比较a和c的值,a的值比c的值大,则交换a和c int tmp = a;a = c;c = tmp; } if(b>c){//比较b和c的值,b的值比c的值大,则交换b和c int tmp = b;b = c;c = tmp;}cout<<a<<' '<<b<<' '<<c<<endl;//从小到大输出a b c 的值 return 0;
}

对于三个数排序可以使用上述思想,因为三个数排序有6种情况:

1

a b c

2

a c b

3

b a c 

4

b c a

5

c a b 

6

c b a

如果是abcd四个数字排序,有几种可能性?如果是abcde五个数字排序,有几种可能性?结论:这种将情况逐一列出的情况不可取,如果对于4个或者4个以上的数,需要考虑的情况变得复杂了,那么对于更多的数进行排序怎么进行处理呢,这些问题在后续的内容会逐步进行讲解。


http://www.ppmy.cn/server/153143.html

相关文章

uniapp跨平台开发---webview调用app方法

1.app端实现 注意:为了实现实时通信,app端页面是.nvue 代码实现 <template><view class"content"><view class"web-view"><web-view class"web-view" :src"url" ref"webview" onPostMessage"o…

了解Hadoop

发展历程&#xff1a; 单机数据系统&#xff1a; localFS单机存储、SQL单机计算 分布式系统&#xff1a; 扩展数据存储Hadoop&#xff1a;基于磁盘&#xff1a;Hadoop核心【HDFS分布式文件系统、MapReduce分布式计算框架、资源管理和任务调度】SQL on Hadoop【Hive、Impala…

golang 熔断限流降级

限流 - 2k 但是我的服务能力只有1k&#xff0c;所以这个时候多出来的流量怎么办&#xff1a; 1. 拒绝 2. 排队等待。用户体验不太好&#xff1a; 当前访问用户过多&#xff0c;请稍后重试和你的服务直接挂了 用户体验降级了 - 原本是访问流畅&#xff0c;下单流畅 -> 当前访…

电脑丢失bcrypt.dll文件是什么原因?找不到bcrypt.dll文件修复办法来啦!

电脑运行时常见问题及解决方案&#xff1a;文件丢失、文件损坏与系统报错 作为一名软件开发从业者&#xff0c;深知电脑在日常使用中难免会遇到各种问题&#xff0c;如文件丢失、文件损坏和系统报错等。这些问题不仅影响工作效率&#xff0c;还可能带来数据丢失的风险。今天&a…

ce第六次作业

1、判断当前磁盘剩余空间是否有20G&#xff0c;如果小于20G&#xff0c;则将报警邮件发送给管理员&#xff0c;每天检查一次磁盘剩余空间。 [rootServer ~]# yum install -y mailx [rootServer ~]# yum -y install bind-utils [rootServer ~]# vim /etc/mail.rc set from15339…

LeetCode 203. 移除链表元素 (C++实现)

1. 题目描述 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,6,3,4,5,6], val 6 输出&#xff1a;[1,2,3,4,5] 示例 2&#xff1a;…

opencv中的常用的100个API

以下是 OpenCV 中常用的 100 个 API&#xff0c;这些 API 涉及图像读取、处理、特征提取、绘图、视频处理等常见操作&#xff1a; 1. 图像操作 cv2.imread(filename, flags) - 读取图像。cv2.imwrite(filename, img) - 保存图像。cv2.imshow(window_name, img) - 显示图像。cv…

全国硕士研究生入学考试(考研)择校择专业之择校主要因素

全国硕士研究生入学考试&#xff08;考研&#xff09;择校择专业之择校主要因素 在中国&#xff0c;研究生入学考试&#xff08;考研&#xff09;是本科生提升学术水平、深化专业知识的重要途径。择校择专业是考研过程中至关重要的环节&#xff0c;直接关系到未来的学术发展和…