|
|
|
| N мальчиков встали в круг и устроили считалочку. Счет начинается с первого мальчика. После каждого шага выбывает мальчик, стоящий через M человек от того, с которого начали счет. На следуещем шаге счет начинается с того, кто стоит после выбывшего. В конце концов остается один мальчик. Определить его номер. | |
|
|
|
|
|
|
|
для: Alex31kv
(03.03.2007 в 19:28)
| | ну и что ?) ... вам всё полностью решить нужно или что то конкретное вызывает затруднение ? | |
|
|
|
|
|
|
|
для: Oligarx
(04.03.2007 в 00:50)
| | Если можно все, то я против не буду, а вообще вот с этого места несовсем понятно: "После каждого шага выбывает мальчик, стоящий через M человек от того, с которого начали счет. На следуещем шаге счет начинается с того, кто стоит после выбывшего. В конце концов остается один мальчик. Определить его номер." Я просто не знаю как удалять элементы из массива.
заранее большое спасибо. | |
|
|
|
|
|
|
|
для: Alex31kv
(04.03.2007 в 12:03)
| | Енто динамический список называется))))) просто делаешь очередь, последний элемент замыкаешь на себя и идешь по этому списку, попутно удаля элементы.
Но если ты не знаком со списками, то просто заводишь буул-массив, везде ставишь тру, а при удалении элемента меняешь на фолс. А бегать по массиву можно так: заводим переменную а=0, потом пока а не равно М, делаешь вот что: переходим на следующий элемент, а потом если он равен фолс, то идем дальше, а если тру, то а++ и идем дальше. Вообще, если есть ограничение по времени, то делай список, а если нет - то массив. Но вообще решение предполагает именно список. | |
|
|
|
|
|
|
|
для: alex19921992
(04.03.2007 в 12:21)
| | Со списками я не знаком, нужно с помощью массива сделать. А мог бы ты пример кода привести, просто я не совсем понял как это сделать. | |
|
|
|
|
|
|
|
для: Alex31kv
(04.03.2007 в 12:52)
| | Ну короче: заводишь массив и переменную, обозначающую текущую позицию. Пусть переменная равна -1. потом делаешь n-1 раз такой цикл(т.е. пока не останется один человек)
{завели еще переменную=0, и пока она не равна М, делаем следующее:{увеличиваем значение первой переменной на 1, если оно больше n, то присваиваем 0. Далее если значение массива [первая переменная] равно true, тогда вторая переменная++, иначе ничего.} теперь значение массива [первая переменная] присваиваем false} Таким образом, за 1 проход внутр. цикла, ты идешь ровно на М шагов, пропуская тех, кого исключил и исключаешь нового. Повторяется это n раз, т.е. пока ты не исключишь последнего человека, и у тебя первая переменная будет иметь нужное значение. | |
|
|
|