Правильный ли алгоритм? Условие: Вычеркнуть цифру в числе так чтобы число осталось наибольшим Алгоритм: Пусть n-количество цифр в искомом числе, а k=1 - сколько надо вычеркнуть 1. Ишем максимальную (если их несколько, то берем самую левую) цифру среди всех цифр. Пусть цифра стоит на позиции i Если i k+1, то решаем эту задачу для оставшейся слева части (так как все оттуда вычеркнуть не можем), и выводим цифры [i..n] Нужно написать на BASH.
Алгоритм написан правильно, однако он не совсем корректно описан.
Вот исправленный алгоритм на BASH:
#!/bin/basnumber=$
k=$
n=$(echo -n $number | wc -c
if (( n <= k )); the
echo "0
els
while (( k > 0 )); d
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)
don
echo "$number
fi
Вызов алгоритма осуществляется следующим образом: ./script.sh number k, где number - число, а k - количество цифр, которые нужно вычеркнуть.
Например, для числа 54321 и k=2 выполним вызов ./script.sh 54321 2 и получим результат 4321, оставив две максимальные цифры (5 и 4) в числе 54321.