10 条题解
-
9
#include <iostream> #include <algorithm> using namespace std; int a[105]; int main() { int b; int sum = 0; cin >> b; for (int i = 1; i <= b; i++) { cin >> a[i]; } for (int i = 2; i <= b; i++) { if (a[i] >= a[i - 1]) { sum += a[i]; } if (a[i] < a[i - 1]) sum += a[i - 1]; } cout << sum; return 0; }
解析:
1.用 for 语句获取数组元素。
2.从第二个人遍历到最后一个。
3.因为我们要优先满足更作→(音调)的(事更多的),所以我们给sum加上第i个人和前一个人更大的那个。
4.在小小的oj里挖呀挖呀挖,得小小的点赞,根本不够康~👍 (你懂的)
-
3
解析
对于第2个人到第n个人,累加每个人向左的最合适距离
max(1[i], a[i-1])
。题解
#include <iostream> #include <algorithm> using namespace std; int main() { int a[105]; int n, sum = 0; cin >> n; for (int i = 1; i <= n; i++) cin >> a[i]; for (int i = 2; i <= n; i++) sum += max(a[i], a[i - 1]); cout << sum; return 0; }
-
2
题解来力
思路:
做题之前,先搞清楚两件事:
1:同学A和同学B之间的最小距离 = 同学A必须保持的最小距离 与 同学B必须保持的最小距离之间的最大值
2:计算时只需要算第i个同学和第i-1个同学之间的最小距离就好了
在这之后,可以用一个一维数组(stu)来保存同学们必须保持的最小距离
然后写一个for循环遍历stu(如果循环从1开始,则需要判断一下i是否==1,以避免程序把第1个同学与第0个同学(没有同学)的最小距离算进去了),求和变量(sum)在每次循环都要增加stu[i]和stu[i-1]之间的最小值
最后输出就行
PS:我做题的时候发现没有写include cmath,以为会CE,结果AC了,这说明iostream里也是有max的
#include <iostream> using namespace std; int stu[105]; int main() { int n,sum = 0; cin >> n; for(int i = 1;i <= n;i++) { cin >> stu[i]; if(i != 1) sum += max(stu[i],stu[i - 1]); } cout << sum; return 0; }
-
-4
1、定义数组a 2、定义n和sum并输入n。 3、for循环输入a[i]。 4、for循环将sum累加a[i]和a[1 - 1]的最大值。 5、最后输出sum。 看到这里就点(暗示>v<”亿“赞👍!!!) 🎉️ 🎉️ 😄 😄 ❤️ 😄 😄 🎉️ 🎉️
#include <iostream> using namespace std; int main() { int a[105]; int n, sum = 0; cin >> n; for (int i = 1; i <= n; i++) cin >> a[i]; for (int i = 2; i <= n; i++) sum += max(a[i], a[i - 1]); cout << sum; return 0; }
- 1
信息
- ID
- 291
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- 递交数
- 1460
- 已通过
- 634
- 上传者