思路
题目要输入 n 个整数,找出序列里最小值和最大值,按最小在前、最大在后输出。
核心思路:边读取数字边比较更新最值,不需要存储全部数字。题目数据范围是 - 100<x<100,所以最大值初始值设为 - 101,最小值初始值设为 101,遍历每一个输入的数,不断更新最大、最小值,全部读取完成后输出结果。
写法 1
引入万能头文件,使用 std 命名空间。主函数中读取 n,定义 maxn=-101、minn=101。循环 n 次,每次读入一个数,用 max 更新 maxn,用 min 更新 minn。循环结束,输出 minn 和 maxn。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int maxn = -101, minn = 101;
for(int i = 0; i < n; i++)
{
int ci;
cin>>ci;
maxn = max(maxn, ci);
minn = min(minn, ci);
}
cout<<minn<<" "<<maxn;
return 0;
}
写法 2
引入万能头文件,使用 std 命名空间。主函数读取 n,初始化 maxn=-101,minn=101。循环 n 次读入数字 x。如果 x 大于当前 maxn,就把 maxn 赋值为 x;如果 x 小于当前 minn,就把 minn 赋值为 x。循环结束输出 minn、maxn。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int maxn = -101, minn = 101;
int x;
for(int i = 0; i < n; i++)
{
cin>>x;
if(x > maxn) maxn = x;
if(x < minn) minn = x;
}
cout<<minn<<" "<<maxn;
return 0;
}
要点提醒:输出顺序是先最小值,再最大值,不能颠倒。
总之来说,题目简单。不对,是很简单。