Какие 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)));
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д