C++小明去超市买商品,已经买了N件,每件商品的价格都是整数,小明发现今天买的东西太多了,决定如果购买商品的总金额大于100元,就把最贵的商品放回去(如果有多个商品价格一样,且都是最贵的,只要放回一件就可以)。 请编程帮助小明计算一下,是否要放回一件商品,最终小明付了多少钱? 输入 第1行有一个整数n(n<=100) 第2行有n个整数,用空格隔开。 输出 第1行输出小明是否需要放回最贵的商品,如果要放回,请输出"Yes",否则请输出"No"。 第2行输出小明最终应该付款的金额。
时间: 2024-03-03 16:50:38 浏览: 388
好的,我可以为你提供帮助。以下是 C++ 代码实现:
```c++
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n, sum = 0;
cin >> n;
int a[n];
for(int i = 0; i < n; i++) {
cin >> a[i];
sum += a[i];
}
sort(a, a + n); // 将商品价格从小到大排序
if(sum > 100) { // 超过100元
if(a[n-1] * 2 <= sum) { // 最贵商品不超过总价的一半
cout << "Yes" << endl;
sum -= a[n-1];
}
else {
cout << "No" << endl;
}
}
cout << sum << endl;
return 0;
}
```
代码思路如下:
1. 先读入商品数量 `n`,并用数组 `a` 存储每个商品的价格。
2. 计算出所有商品的总价 `sum`。
3. 将商品价格从小到大排序,方便后面找到最贵的商品。
4. 判断是否超过 100 元。若超过则继续执行步骤 5,否则直接输出总价并结束程序。
5. 判断最贵商品的价格是否小于等于总价的一半。若是,则说明放回最贵商品后总价仍然不超过 100 元,输出 "Yes" 并将总价减去最贵商品的价格;否则输出 "No"。
6. 最后输出最终的总价。
希望能对你有所帮助。
阅读全文