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

21 Авг 2019 в 06:04
177 +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 Апр 2024 в 13:24
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир