Считалочка с использованием списка - C#
Формулировка задачи:
«Считалка». N ребят стоят по кругу. Начав отсчет от первого, удаляют каждого К-го, смыкая круг после каждого удаления. Определить, кто остался последним.
удаляет элемент,начиная с 0 индекса. Т.е. нужно удалить сначала третий элемент,а потом пятый и получается вот:
1 2 4 5 6 7 8 9 10 //удалился 3 элемент,начиная от начала.
1 2 4 5 7 8 9 10 // удалился 5 элемент,опять с начального элемента.
а нужно,чтоб удалялось с выбранного предыдущего элемента,т.е
1 2 4 5 6 7 8 9 10 //удалился 3 элемент,начиная от начала.
1 2 4 5 6 7 8 10 // удалился 5 элемент,начиная от четверки
Листинг программы
- class Program
- {
- static void Main(string[] args)
- {
- Console.WriteLine("Задайте количество в кругу");
- int N = Convert.ToInt32(Console.ReadLine());
- int K;
- List<int> Players = new List<int>(N);
- for (int i = 0; i <=(N-1); i++)
- {
- Players.Insert(i, (i + 1));
- }
- for (int i = 0; i <= Players.Count+1; i++)
- {
- Console.WriteLine();
- Console.WriteLine("Введите номер игрока,которого будете удалять");
- K = Convert.ToInt32(Console.ReadLine());
- K--;
- if (K < Players.Count)
- {
- Players.RemoveAt(K);
- }
- else
- {
- Console.WriteLine("Этот игрок уже удален");
- i--;
- }
- Console.WriteLine("Оставшиеся");
- foreach (int j in Players)
- {
- Console.Write(j + " ");
- }
- }
- Console.ReadLine();
- }
- }
Решение задачи: «Считалочка с использованием списка»
textual
Листинг программы
- using System;
- using System.Linq;
- using System.Collections.Generic;
- public class Test
- {
- public static void Main()
- {
- int n = 10;
- int k = 3;
- var ring = new List<int>(Enumerable.Range(1, n));
- for (var ki = --k; ring.Count != 1; ki = (ki + k) % ring.Count)
- ring.RemoveAt(ki);
- Console.WriteLine(ring[0]);
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д