Introfor

요셉의 환형 문제 본문

Doing/C&C++

요셉의 환형 문제

YongArtist 2017. 10. 10. 00:18

요셉의 문제 :

A부터 J까지의 10명의 사람이 시계 방향으로 순서대로 원을 지어 앉아 있다고 하자. 이때 A부터 시작하여서 4명 간격으로 사람을 그 원에서 뽑아낸다고 하면 그 순서는 어떻게 될 것인가?


결과 : A, E, I, D, J, G, F, H, C, B


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
#include <stdio.h>
#include <malloc.h>
 
typedef struct _node {
    int data;
    struct _node *next;
} node;
 
node *head;
 
void insertNodes(int k) {
 
    node *t;
    int i;
    t = (node*)malloc((sizeof(node)));
    t->data = 65;
    head = t;
 
    for (i = 1; i < k; i++) {
        t->next = (node*)malloc(sizeof(node));
        t = t->next;
        t->data = 65 + i;
    }
 
    t->next = head;
}
 
void deleteNode(node *t) {
 
    node *del;
    del = t->next;
    t->next = t->next->next;
    free(del);
}
 
void josephus(int n, int m) {
    node *t;
    insertNodes(n);
    t = head;
    printf("Answer : ");
    printf("%c ", t->data);
 
    while (t != t->next) {
        for (int i = 0; i < m-1; i++) {
            if (t->data == 74) {
                deleteNode(t);
            }
            t = t->next;
            head = t->next;
        }
        printf("%c ", t->next->data);
        deleteNode(t);
    }
    printf("%c\n", t->data);
}
 
void main(void) {
 
    int n = 10, m = 4;
    josephus(n, m);
}
cs


'Doing > C&C++' 카테고리의 다른 글

[C++] Reference  (0) 2020.06.29
[C++] Pair, Vector STL  (0) 2020.06.29
행렬 경로 찾기  (0) 2017.10.04
조약돌 놓기  (0) 2017.10.02
Russian Peasant Multiplication  (0) 2017.10.02
Comments