Какие 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)));
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.357 из 5
Похожие ответы