Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/15: Рейтинг темы: голосов - 15, средняя оценка - 5.00
 Аватар для w0nder
0 / 0 / 0
Регистрация: 23.11.2012
Сообщений: 131

Написать алгоритм Иосифа Флавия, используя очередь

29.04.2013, 00:03. Показов 2884. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сущ-т легенда что Иосиф Флавий выжил и стал известным благодоря математической одаренности. В ходе Иудейской войны он в составе отряда из 41 иудейского воина был загнан римлянами в пещеру. Предпочитая самоубийство в плену, воины решили выстроится в круг и последовательно убивать каждого 3го из живых до тех пор пока е останется ни одного человека. Однако Иосиф на ряду с 1 из единомышленников счел подобный конец бессмысленным - он быстро вычеслил места в круге на которые себя и товарища. И лишь поэтому остался жив.
Исключать k-го, пока не останется 1 человек. Определить номер уцелевшего.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.04.2013, 00:03
Ответы с готовыми решениями:

Алгоритм нахождения главного элемента из списка (задача Иосифа Флавия)
Выписал алгоритм,называется ф-ция Иосифа. Смысл такой,что N=9 M=5 . Допустим есть 9 человек в кругу, и после каждого 5 удаления смыкают...

Задача Иосифа Флавия
Здравствуйте! Пытаясь ответить на вопрос одного из пользователей данного форума, решил в лоб следующую задачу: N человек,...

Задача иосифа флавия
N человек играют в следующую игру: стоя в кругу они начинают считалку. Счёт идёт до числа M. Игрок, на которого падает счёт M, выбывает,...

5
 Аватар для Ternsip
670 / 198 / 29
Регистрация: 10.05.2012
Сообщений: 595
29.04.2013, 00:06
w0nder, напишите по-русски.
0
 Аватар для w0nder
0 / 0 / 0
Регистрация: 23.11.2012
Сообщений: 131
29.04.2013, 00:10  [ТС]
Ternsip, как-то так, не я писала

Существует легенда, что Иосиф Флавий выжил и стал известным благодоря математической одаренности. В ходе Иудейской войны он в составе отряда из 41 иудейского воина был загнан римлянами в пещеру. Предпочитая самоубийство в плену, воины решили выстроиться в круг и последовательно убивать каждого 3-его из живых до тех пор, пока не останется ни одного человека.

Исключать k-го, пока не останется 1 человек. Определить номер уцелевшего.
0
 Аватар для Ternsip
670 / 198 / 29
Регистрация: 10.05.2012
Сообщений: 595
29.04.2013, 00:16
w0nder, а в чём проблема состоит ?
0
 Аватар для w0nder
0 / 0 / 0
Регистрация: 23.11.2012
Сообщений: 131
29.04.2013, 00:18  [ТС]
Ternsip, в том, чтобы реализовать это, используя очередь
0
 Аватар для Ternsip
670 / 198 / 29
Регистрация: 10.05.2012
Сообщений: 595
29.04.2013, 00:22
w0nder, Вам повезло, у меня завалялся старый List (двунаправленная очередь) в моей реализации
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
template <typename E>
class Tlist{
public:
    struct list{
        E inf;
        list * next;
        list * prev;
    };
    //----
    list * head;
    list * tail;
    list * cur;
    //----
    list * init_list(){ 
        return NULL;
    };
    //----
    E pop_front(){
        list * r = head;
        E k = head->inf;
        if (head->next == NULL)
            head = tail = NULL;
        else {
            head = head->next;
            head->prev = NULL;
        };
        delete r;
        return k;
    };
    //----
    E pop_back(){
        list * r = tail;
        E k = tail->inf;
        if (tail->prev == NULL)
            head = tail = NULL;
        else {
            tail = tail->prev;
            tail->next = NULL;
        };
        delete r;
        return k;
    };
    //----
    void push_back(E key){
        list * r = new list;
        r->next = NULL;
        r->prev = NULL;
        r->inf = key;
        if(!head){
            head = r;
            tail = head;
        } else {
            r->prev = tail; 
            tail->next = r;
            tail = r;
        }
        cur = head;
    };
    //----
    E EraseRight(int x){
        list * r = cur;
        for (int i = 0; i < x; i++){ 
            if (r != tail){
                r = r->next;
            } else {
                r = head;
            };
        };
        int c = r->inf;
        if (r == head) {
            cur = head->next;
            return pop_front();
        };
        if (r == tail) {
            cur = head;
            return pop_back();
        };
        if (r != head && r != tail) {
            cur = r->next;
            r->prev->next = r->next;
            r->next->prev = r->prev;
            delete r;
        };
        return c;
    };
    //----
    E EraseLeft(int x){
        list * r = cur;
        for (int i = 0; i < x; i++){ 
            if (r != head){
                r = r->prev;
            } else {
                r = tail;
            };
        };
        int c = r->inf;
        if (r == head) {
            cur = tail;
            return pop_front();
        };
        if (r == tail) {
            cur = tail->prev;
            return pop_back();
        };
        if (r != head && r != tail) {
            cur = r->prev;
            r->prev->next = r->next;
            r->next->prev = r->prev;
            delete r;
        };
        return c;
    };
    //----
    Tlist(){
        head = tail = init_list();
        cur = head;
    };
};
Тут есть операция EraseLeft и Right в аргумент подаёте номер К, тем самым удаляете элемент, стоящий на позиции, которая получается путём перещагивания на k позиций от той, на которой вы остановились. Пихать в лист l.push(число); Объявление Tlist <int> l;
C++
1
2
printf("%d\n", l.EraseRight(t));
printf("%d\n", l.EraseLeft(-t));// если влево -- то с минусом
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.04.2013, 00:22
Помогаю со студенческими работами здесь

Задача Иосифа Флавия
Всем привет. Помогите пожалуйста с этой задачей. Никак допедрить не могу. вот код: #include&lt;iostream&gt; ...

Задача Иосифа Флавия
Здравствуйте. Помогите пожалуйста реализовать такую задачу через списки: По кругу становятся несколько человек, пронумерованых от 1 до...

Задача Иосифа Флавия, решение циклическим списком
http://andrei-sapeshko.blogspot.ru/2013/04/blog-post.html тут есть пример, но он немного непонятный. struct node { int item; ...

Задача Иосифа Флавия. Удалить каждый второй элемент из списка и в конце вывести на экран последний оставшийся элемент
Создать циклический список, в котором находятся элементы от 1 до N. Нужно написать программу, которая удаляет каждый второй элемент из...

Алгоритм Иосифа Флавия
Предистория: Вокруг считающего стоят n человек, один из которых назван первым., а остальные занумерованы против часовой стрелки числами...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод Сайт называется reddit: The Thinkpad X220 Tablet is the best budget school laptop period. Это. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru