2 条题解
-
0
有人似乎不理解INT_MAX和INT_MIN,那我就先讲讲这两个东西
INT_MAX和INT_MIN在标准头文件limits.h中定义。
#define INT_MAX 2147483647 #define INT_MIN (-INT_MAX - 1)
在C/C++语言中,不能够直接使用-2147483648来代替最小负数,因为这不是一个数字,而是一个表达式。表达式的意思是对整数21473648取负,但是2147483648已经溢出了int的上限,所以定义为(-INT_MAX -1)。
说白了,INT_MAX就是int型的最大值,INT_MIN是int型的最小值。
这道题好水啊我的代码和前面几位雷同(非抄袭),都是能AC的,如果只是想通过该题,可以看看前面几位,不必看下去了。但如果想明白该题思路,那我建议你看下去(好像就我一个人会写这么多?)
核心思路:将变量minn不断取最小值,也就是
minn = min(minn, x);
,另一个变量maxn不断取每一个数减minn的最大值,maxn = max(maxn, x - minn);
知道了思想,就可以开始写了awa
//祖传万能头 #include <bits/stdc++.h> //命名空间 using namespace std; //minn要往下取,所以取INT_MAX;maxn要往上取,所以取INT_MIN int n, x, minn = INT_MAX, maxn = INT_MIN; //主函数 int main() { //输入加速 ios::sync_with_stdio(false); cin.tie(0); //输入天数 cin >> n; //输入并计算 for (int i = 0; i < n; i++) { //输入每天资金价值变化 cin >> x; //计算资金价值最小值 minn = min(minn, x); //计算最多能挣多少钱,即资金价值最大值 - 资金价值最小值 maxn = max(maxn, x - minn); } //输出 cout << maxn << endl; //华丽地结束 return 0; }
一些可能会问的问题及回答
Q:为什么不用数组? A:没必要。还占空间。
Q:为什么要加速? A:我的代码模板。懒得改[doge]
Q:为什么只用一个循环? A:没必要(其实是因为懒)。
- 1
信息
- ID
- 1229
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- 递交数
- 150
- 已通过
- 73
- 上传者