使用数组将最后一个最大值更改为第一个最小值
changing last maximum with first minimum using arrays
我正在尝试实现一个c ++程序,当给定一个序列时,它会尝试用最后一个最大值更改第一个最小值。我的代码在我大学的电子法官上进行了测试。它通过了 32 个测试用例,但卡在 32 个测试用例上。你能发现可能出了什么问题吗,关于更好的 Int,它只是为了更大的数字。程序语句是输入包含一个自然 n – 序列中的数字数量,然后是 N 个数字 – 序列的元素。 输出应该是更改的数字序列。
#include <iostream>
//#include <cmath>
#include <climits>
#define SIZE 100000
using namespace std;
int main()
{
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
long long int a[SIZE], min, max;
int n, min_i, max_i; min = 0x7fffffffffffffff; max = -1;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a[i];
if (a[i] < min) { min = a[i]; min_i = i; }
if (a[i] >= max) { max = a[i]; max_i = i; }
}
a[max_i] = min; a[min_i] = max;
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
return 0;
}
顺便说一下,对于最大的最大数量,我尝试了,int_max,uint_max,更好的 INT,在第 32 个测试用例失败时都是一样的。
-
是否可以保证输入序列(代码中的
n
(不超过SIZE
(代码中为 100000(元素? 是否可以改用动态内存分配? -
能保证
n
至少1
吗? 如果是0
则min_i
和max_i
都将具有不确定的状态,当您将它们用作索引时,可能会使您的程序崩溃:a[max_i] = min; a[min_i] = max;
. -
如果上述两个假设是有效的,我会按照@paddy和@Frodyne已经建议的去做,并在进入主循环之前用有效数据初始化所有变量:
size_t min_i = 0;
size_t max_i = 0;
cin >> a[0];
min = a[0];
max = a[0];
for (size_t i = 1; i < n; i++) { ... }
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 查找数组中第一个最小值和最后一个最大值元素之间的算术平均值
- C++ 函数,用于查找传入的 N 个数字的平均值、总和、最小值和最大值
- 需要使用模板查找数组的第二个最小和最小值
- C++有效地找到向量中第一个最接近的匹配值?
- 查找包含 N 个元素的数组的最小值和最大值
- 在不进行排序的情况下查找数组中n个最小值的索引
- 如何在c++中找到第一个最大值
- 删除C++中向量中第一个最小的数字(并保持顺序)
- 使用数组将最后一个最大值更改为第一个最小值
- 要读取txt文件并从第二列中找到其最小值的第一列值
- C 腋窝可以找到2个载体的成对最小值
- 从模板继承<类型名 T、T 最大值、T 最小值>具有多个类型名模板参数的结构
- 在没有比较运算符的情况下查找 2 个数字之间的最小值
- 在 4 个__m256d寄存器中找到 4 个最小值
- 找到第二个最小值
- 如何在二维数组(c++)中找到N个最小值
- c++中给定值的第一个最小值
- 创建一个3x3x3阵列.用0到9之间的随机值填充.输出数组.找出3个最小值和3个最大值的输出
- 在链表中使用INT_MAX查找两个最小值会导致分割错误