Вычеркнуть цифру в числе так чтобы число осталось наибольшим

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
cotypan
Сообщения: 5
Зарегистрирован: 19 мар 2015, 14:24

В положительном целом числе N ≤ 1000000 вычеркнуть цифру так, чтобы число, которое осталось, было наибольшим.
Проблемы с алгоритмом, если действовать по нему то в результате получается не правильный результат.
Алгоритм:
Пусть n-количество цифр в искомом числе, а k=1 - сколько надо вычеркнуть.
1. Ишем максимальную (если их несколько, то берем самую левую) цифру среди всех цифр. Пусть цифра стоит на позиции i.
Если i < k+1, то вычеркиваем все, что слева, выводим эту цифру и решаем задачу для оставшейся части числа (от i+2 до n).
Если i = k+1, то вычеркиваем все, что слева, и ответ уже получен - вывести полученное число.
Если i > k+1, то решаем эту задачу для оставшейся слева части (так как все оттуда вычеркнуть не можем), и выводим цифры [i..n].
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Я проанализиваровал алгоритм - он правильный. Единственное, я бы поправил вот этом место, тут возможна опечатка:
от i+2 до n
Нужно заменить на:
от i+1 до n
Либо ты неправильно понимаешь алгоритм, либо в действительности чего-то не вижу я. Давай ты сюда выложишь контрпример, на котором по-твоему алгоритм не работает и последовательность действий, которые приводят к неверному результату, и тогда всё станет ясно.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить