Форум: Форум C++Разное
Новые темы: 00
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите решить задачу на С++
 
 автор: Alex31kv   (03.03.2007 в 19:28)   письмо автору
 
 

N мальчиков встали в круг и устроили считалочку. Счет начинается с первого мальчика. После каждого шага выбывает мальчик, стоящий через M человек от того, с которого начали счет. На следуещем шаге счет начинается с того, кто стоит после выбывшего. В конце концов остается один мальчик. Определить его номер.

  Ответить  
 
 автор: Oligarx   (04.03.2007 в 00:50)   письмо автору
 
   для: Alex31kv   (03.03.2007 в 19:28)
 

ну и что ?) ... вам всё полностью решить нужно или что то конкретное вызывает затруднение ?

  Ответить  
 
 автор: Alex31kv   (04.03.2007 в 12:03)   письмо автору
 
   для: Oligarx   (04.03.2007 в 00:50)
 

Если можно все, то я против не буду, а вообще вот с этого места несовсем понятно: "После каждого шага выбывает мальчик, стоящий через M человек от того, с которого начали счет. На следуещем шаге счет начинается с того, кто стоит после выбывшего. В конце концов остается один мальчик. Определить его номер." Я просто не знаю как удалять элементы из массива.

заранее большое спасибо.

  Ответить  
 
 автор: alex19921992   (04.03.2007 в 12:21)   письмо автору
 
   для: Alex31kv   (04.03.2007 в 12:03)
 

Енто динамический список называется))))) просто делаешь очередь, последний элемент замыкаешь на себя и идешь по этому списку, попутно удаля элементы.

Но если ты не знаком со списками, то просто заводишь буул-массив, везде ставишь тру, а при удалении элемента меняешь на фолс. А бегать по массиву можно так: заводим переменную а=0, потом пока а не равно М, делаешь вот что: переходим на следующий элемент, а потом если он равен фолс, то идем дальше, а если тру, то а++ и идем дальше. Вообще, если есть ограничение по времени, то делай список, а если нет - то массив. Но вообще решение предполагает именно список.

  Ответить  
 
 автор: Alex31kv   (04.03.2007 в 12:52)   письмо автору
 
   для: alex19921992   (04.03.2007 в 12:21)
 

Со списками я не знаком, нужно с помощью массива сделать. А мог бы ты пример кода привести, просто я не совсем понял как это сделать.

  Ответить  
 
 автор: alex19921992   (04.03.2007 в 15:58)   письмо автору
 
   для: Alex31kv   (04.03.2007 в 12:52)
 

Ну короче: заводишь массив и переменную, обозначающую текущую позицию. Пусть переменная равна -1. потом делаешь n-1 раз такой цикл(т.е. пока не останется один человек)
{завели еще переменную=0, и пока она не равна М, делаем следующее:{увеличиваем значение первой переменной на 1, если оно больше n, то присваиваем 0. Далее если значение массива [первая переменная] равно true, тогда вторая переменная++, иначе ничего.} теперь значение массива [первая переменная] присваиваем false} Таким образом, за 1 проход внутр. цикла, ты идешь ровно на М шагов, пропуская тех, кого исключил и исключаешь нового. Повторяется это n раз, т.е. пока ты не исключишь последнего человека, и у тебя первая переменная будет иметь нужное значение.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования