Какие K цифр в числе N надо удалить, чтобы оставшиеся цифры образовывали наибольшее число? - C#

Узнай цену своей работы

Формулировка задачи:

Задано число N и число K. Какие K цифр надо удалить, чтобы оставшиеся цифры образовывали наибольшее число. Пример: Ввод:
46798316 4
Вывод:
1 2 3 7

Решение задачи: «Какие K цифр в числе N надо удалить, чтобы оставшиеся цифры образовывали наибольшее число?»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. class Program
  6. {
  7.     static List<int> RemoveDigits(string n, int k)
  8.     {
  9.         var digits = n.Select((ch, i) => new {Value = ch - '0', Index = i + 1}).ToList();
  10.         int j = 0;
  11.         for (int i = 0; i < k; ++i)
  12.         {
  13.             while (j != digits.Count - 1 && digits[j].Value >= digits[j+1].Value)
  14.             {
  15.                 ++j;
  16.             }
  17.             digits.RemoveAt(j);
  18.             j = Math.Max(0, j - 1);
  19.         }
  20.         return Enumerable.Range(1, n.Length).Except(digits.Select(e => e.Index)).ToList();
  21.     }
  22.  
  23.     static void Main(string[] args)
  24.     {
  25.         string n = Console.ReadLine();
  26.         int k = int.Parse(Console.ReadLine());
  27.         Console.WriteLine(string.Join(" ", RemoveDigits(n, k)));
  28.     }
  29. }

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


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

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

14   голосов , оценка 4.357 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы