Правильный ли алгоритм? Условие: Вычеркнуть цифру в числе так чтобы число осталось наибольшим.
Алгоритм: Пусть n-количество цифр в искомом числе, а k=1 - сколько надо вычеркнуть.
1. Ишем максимальную (если их несколько, то берем самую левую) цифру среди всех цифр. Пусть цифра стоит на позиции i.
Если i k+1, то решаем эту задачу для оставшейся слева части (так как все оттуда вычеркнуть не можем), и выводим цифры [i..n].
Нужно написать на BASH.

21 Авг 2019 в 06:04
146 +1
0
Ответы
1

Алгоритм написан правильно, однако он не совсем корректно описан.

Вот исправленный алгоритм на BASH:

#!/bin/bash
number=$1
k=$2
n=$(echo -n $number | wc -c)
if (( n <= k )); then
echo "0"
else
while (( k > 0 )); do
max=$(echo $number | grep -o '[0-9]' | sort -nr | head -1)
index=$(echo $number | grep -aob $max | head -1 | cut -d: -f1)
number=$(echo $number | cut -c $((index+1))-)
k=$((k-1))
done
echo "$number"
fi

Вызов алгоритма осуществляется следующим образом: ./script.sh number k, где number - число, а k - количество цифр, которые нужно вычеркнуть.

Например, для числа 54321 и k=2 выполним вызов ./script.sh 54321 2 и получим результат 4321, оставив две максимальные цифры (5 и 4) в числе 54321.

20 Апр в 13:24
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 548 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир