C/C++

Программирование на с++

Вводится последовательность целых чисел (0 – конец последовательности), найти
группу наибольшей длины, числа которой состоят из возрастающей
последовательности нечетных цифр числа. (Нужно сделать без массивов)
#include <iostream>
#include <vector>
#include <string>
using namespace std;
bool seq(unsigned num) {
auto str = to_string(num);
auto length = str.length();
if (length < 2) return false;
if (str.front() & 1) {
for (auto i = 1U; i < length; ++i) {
if ((~str.at(i) & 1) || str.at(i) < str.at(i - 1)) {
return false;
}
}
return true;
}
return false;
}
pair<int, int> find(const vector<unsigned>& nums) {
pair<int, int> box{ 0, -1 };
pair<int, int> tmp{ 0, 0 };
int length = static_cast<int>(nums.size());
for (int i = 0; i < length; ++i) {
if (!seq(nums.at(i))) tmp.first = tmp.second = i;
else {
tmp.first = i;
while (seq(nums.at(i))) {
tmp.second = i;
if (++i == length) {
--i;
break;
}
}
}
if (tmp.first != tmp.second) {
if (box.second - box.first < tmp.second - tmp.first) {
box = tmp;
}
}
}
return box;
}
int main() {
vector<unsigned> nums;
unsigned num;
while (true) {
cin >> num;
if (!num) break;
nums.push_back(num);
}
auto [start, last] = find(nums);
if (last != -1) for (auto i = start; i <= last; ++i) {
cout << nums.at(i) << ' ';
puts("");
} else {
puts("Not found!");
}
system("pause > nul");
}
СЖ
Сергей Живой
76 004
Лучший ответ
Ну, ты код вижу рожать вроде умеешь.
Покажи, что сделал. Уж это можно же сделать:
1 - ввод последовательности, так чтобы 0 был конец
И куда эту группу сохранять, если массивы запретили?
Особенно потом если найдем эту группу, то из чего нам ее выводить, мы же ее вводим и она уже пропала, так как не сохранена в последовательности?
Один вариант в виде рекурсии может и пройдет... но что-то я сомневаюсь, что тут собака зарыта.
пусть препод покажет решение этой задачи
хотелось-бы посмотреть