Какие K цифр в числе N надо удалить, чтобы оставшиеся цифры образовывали наибольшее число? - C#
Формулировка задачи:
Задано число N и число K. Какие K цифр надо удалить, чтобы оставшиеся цифры образовывали наибольшее число.
Пример:
Ввод:
Вывод:
46798316
4
1 2 3 7
Решение задачи: «Какие K цифр в числе N надо удалить, чтобы оставшиеся цифры образовывали наибольшее число?»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static List<int> RemoveDigits(string n, int k)
{
var digits = n.Select((ch, i) => new {Value = ch - '0', Index = i + 1}).ToList();
int j = 0;
for (int i = 0; i < k; ++i)
{
while (j != digits.Count - 1 && digits[j].Value >= digits[j+1].Value)
{
++j;
}
digits.RemoveAt(j);
j = Math.Max(0, j - 1);
}
return Enumerable.Range(1, n.Length).Except(digits.Select(e => e.Index)).ToList();
}
static void Main(string[] args)
{
string n = Console.ReadLine();
int k = int.Parse(Console.ReadLine());
Console.WriteLine(string.Join(" ", RemoveDigits(n, k)));
}
}