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