В обувном магазине продается обувь разного размера. Известно, что одну пару обуви можно надеть на другую, если она хотя бы на три размера больше. В магазин пришел покупатель. Требуется определить, какое наибольшее количество пар обуви сможет предложить ему продавец так, чтобы он смог надеть их все одновременно.
Входные данные
Сначала вводится размер ноги покупателя (обувь меньшего размера он надеть не сможет), затем количество пар обуви в магазине и размер каждой пары. Размер — натуральное число, не превосходящее 100, количество пар обуви в магазине не превосходит 1000.
Выходные данные
Выведите единственное число — максимальное количество пар обуви.
Вот мой код:
#include
#include
#include

using namespace std;

int main() {
int n, footSize;
cin >> footSize >> n;
vector a;
for (int i = 0; i < n; i++) {
int temp = 0;
cin >> temp;
if (temp >= footSize) {
a.push_back(temp);
}
}
sort(a.begin(), a.end());
int temp = 0, i = 0;
for (auto now : a) {
if (now >= temp + 3) {
i++;
temp = now;
}
}
cout << i;
return 0;
}
Что-то не так поправьте

РешОрше РешОрше    2   30.03.2020 05:07    266

Ответы
yulyapikulyk yulyapikulyk  30.12.2023 15:07
Привет! Видимо, ты хочешь решить задачу о предложении покупателю наибольшего количества пар обуви, которые он сможет надеть одновременно. В коде, который ты предоставил, есть некоторые ошибки и недочеты, которые я помогу исправить.

Во-первых, у тебя не указаны заголовки для включения необходимых библиотек. Тебе потребуется включить для использования объектов cin и cout, а также и для работы с векторами и сортировки. Вставь следующие строки перед началом main():
```
#include
#include
#include
```

Во-вторых, у тебя нет объявления шаблона для вектора a. Исправь строку
```
vector a;
```
на
```
vector a;
```

После этих исправлений код будет выглядеть следующим образом:
```
#include
#include
#include

using namespace std;

int main() {
int n, footSize;
cin >> footSize >> n;
vector a;
for (int i = 0; i < n; i++) {
int temp = 0;
cin >> temp;
if (temp >= footSize) {
a.push_back(temp);
}
}
sort(a.begin(), a.end());
int temp = 0, i = 0;
for (auto now : a) {
if (now >= temp + 3) {
i++;
temp = now;
}
}
cout << i;
return 0;
}
```

Теперь, когда код исправлен, давай разберемся, как он работает.

1. В начале вводятся данные: размер ноги покупателя и количество пар обуви в магазине.

2. Затем создается пустой вектор a, в который будут добавляться размеры обуви, которые больше или равны размеру ноги покупателя.

3. В цикле происходит считывание размеров каждой пары обуви. Если размер обуви больше или равен размеру ноги покупателя, он добавляется в вектор a.

4. После считывания всех размеров обуви вектор a сортируется по возрастанию, чтобы размеры были в порядке возрастания.

5. Затем инициализируются две переменные: temp для хранения размера последней надетой пары обуви и i для подсчета количества пар обуви, которые покупатель может надеть одновременно. Обе переменные устанавливаются равными нулю.

6. В цикле происходит проверка каждой пары обуви в векторе a. Если размер текущей пары обуви больше или равен temp + 3 (т.е. на три размера больше, чем предыдущая надетая пара), увеличиваем i на единицу и присваиваем temp значение размера текущей пары обуви.

7. В конце выводится значение i, которое является максимальным количеством пар обуви, которые покупатель сможет надеть одновременно.

Надеюсь, эта подробная разборка помогла тебе понять код и исправить его! Если у тебя возникнут еще вопросы, не стесняйся задавать!
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика