Задача Иосифа Флавия - C#
Формулировка задачи:
Решил попробовать сделать,через словарь. Затруднение в том,как убирать,каждый k-ый.
Вокруг считающего стоят n человек, один из которых назван первым, а остальные
занумерованы против часовой стрелки числами от 2 до n. Считающий ведет счет до k,
начиная с первого. Счет продолжается со следующего человека (при этом выбывшие из круга не считаются),
и так до тех пор, пока не останется один человек. Требуется определить начальный номер этого человека.
Листинг программы
- using System;
- using System.Linq;
- using System.Collections.Generic;
- class Player
- {
- public static Dictionary<int, string> MyDic(int n)
- {
- Dictionary<int, string> dic = new Dictionary<int, string>();
- Console.WriteLine("Введите имя : \n");
- string s;
- for (int j = 1; j <= n; j++)
- {
- Console.Write("Имя{0} --> ", j);
- s = Console.ReadLine();
- dic.Add(j, s);
- }
- return dic;
- }
- }
- class Program
- {
- public static void Main()
- {
- Console.Write("Сколько игроков добавить?");
- int n = int.Parse(Console.ReadLine());
- Dictionary<int, string> dic = Player.MyDic(n);
- Console.Write("До какого считать?");
- int k = int.Parse(Console.ReadLine());
- ICollection<int> keys = dic.Keys;
- while (keys.Count != 1)
- {
- for (int i = 1; i <= k; ++i)
- {
- if(i == k)
- {
- dic.Remove(i);//тут проблема :/
- }
- }
- }
- foreach (int i in keys)
- {
- Console.Write("Остался:" + dic[i]);
- }
- }
- }
Нус,если что проблема,в том,что больше ключа с k-ым номером нету,т.к. я его удалил. Вооот не знаю,как выйти из положения
Решение задачи: «Задача Иосифа Флавия»
textual
Листинг программы
- using System;
- using System.Collections.Generic;
- class Program
- {
- public static void Main()
- {
- Queue<string> que = new Queue<string>("Abigail Benjamin Charlotte Daniel Emma Fred Grace Henry Isabella Jayden Kimberly Liam Mia Nicholas Olivia Paul Quilla Ryan Sofia Tyler Unity Vernon Waleis Xandra Yrre Zinnia".Split());
- int k = Int32.Parse(Console.ReadLine());
- while (que.Count != 1)
- {
- for (int i = k - 1; i > 0; --i)
- {
- que.Enqueue(que.Dequeue());
- }
- que.Dequeue();
- }
- Console.WriteLine(que.Dequeue());
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д