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