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