写c++代码:В обувном магазине продается обувь разного размера. Известно, что одну пару обуви можно надеть на другую, если она хотя бы на три размера больше. В магазин пришел покупатель. Требуется определить, какое наибольшее количество пар обуви сможет предложить ему продавец так, чтобы он смог надеть их все одновременно. Входные данные Сначала вводится размер ноги покупателя (обувь меньшего размера он надеть не сможет), затем количество пар обуви в магазине и размер каждой пары. Размер — натуральное число, не превосходящее 100, количество пар обуви в магазине не превосходит 1000. Выходные данные Выведите единственное число — максимальное количество пар обуви. Sample Input: 26 5 30 35 40 41 42 Sample Output: 3
时间: 2024-02-10 17:06:58 浏览: 75
以下是一个可行的 C++ 代码:
```
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int foot_size, n;
cin >> foot_size >> n;
vector<int> shoe_sizes(n);
for (int i = 0; i < n; i++) {
cin >> shoe_sizes[i];
}
sort(shoe_sizes.begin(), shoe_sizes.end()); // 排序,从小到大
int max_pairs = 0;
for (int i = 0; i < n; i++) {
if (shoe_sizes[i] >= foot_size) { // 只考虑比脚长大的鞋子
int pairs = 1;
for (int j = i + 1; j < n; j++) {
if (shoe_sizes[j] - shoe_sizes[i] >= 3) { // 可以穿上去的鞋子
pairs++;
i = j; // 更新 i,以免重复计算
}
}
max_pairs = max(max_pairs, pairs);
}
}
cout << max_pairs << endl;
return 0;
}
```
首先,我们读入脚长和鞋子数量,并将鞋子大小存储在一个向量中。然后,我们对向量进行排序,以便从小到大处理鞋子大小。接下来,我们遍历向量中的每个鞋子,只考虑比脚长大的鞋子。对于每个鞋子,我们计算可以穿上去的鞋子数量,并将其与当前的最大数量进行比较。最后,我们输出最大数量。
阅读全文