Задача Иосифа Флавиля. Решение с использованием коллекции - C#
Формулировка задачи:
Есть задача, наверняка многие ее уже решали. Так вот, хочу узнать оптимальность решения. У меня есть два решения, хочу понять, какое из них оптимальнее и почему. Самое главное - это почему! Вот условие:
Вот мои решения:
В первом - LinkedList, а во втором ArrayList. Хотелось бы вашего мнения. Или, может, я вообще неправильные коллекции выбрал для решения этой задачи?
P.S. Только не говорите, что здесь нужно использовать Queue или Stack. Ума не приложу, как с их помощью решить ее.
В кругу стоят N человек, пронумерованных от 1 до N. При ведении счета по кругу вычёркивается каждый второй человек, пока не останется один. Составить программу, моделирующую процесс.
int[] listPerson = new int[11] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 }; LinkedList<int> list = new LinkedList<int>(listPerson); var currentPerson = list.First; while (list.Count != 1) { list.Remove(currentPerson.Next ?? list.First); currentPerson = currentPerson.Next ?? list.First; } //----------------------------------------------------------------------------------- ArrayList array = new ArrayList(listPerson); int i = 1; while (array.Count != 1) { array.RemoveAt(i); ++i; if (i > array.Count) { i = 1; } if (i == array.Count) { i = 0; } }
Никаких идей нет?
Решение задачи: «Задача Иосифа Флавиля. Решение с использованием коллекции»
textual
Листинг программы
int[] listPerson = new int[10] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; Queue<int> list = new Queue<int>(listPerson); while (list.Count != 1) { list.Enqueue(list.Dequeue()); list.Dequeue(); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д