Advertisement
Idanref

Untitled

Mar 26th, 2021 (edited)
620
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.58 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "queue.h"
  4.  
  5.  
  6. // Josephus problem
  7. // Needs to include queue.h and queue.c
  8. int main()
  9. {
  10.     // yusfus
  11.     // example:
  12.     // n = 9, m = 2
  13.     // input: [1,2,3,4,5,6,7,8,9]
  14.     // output: [2,4,6,8,1,5,9,7,3]
  15.  
  16.     int n = 9;
  17.     int m = 2;
  18.     int counter = 1;
  19.     int value;
  20.  
  21.     queue q1;
  22.     create_queue(&q1);
  23.  
  24.     enqueue(1, &q1);
  25.     enqueue(2, &q1);
  26.     enqueue(3, &q1);
  27.     enqueue(4, &q1);
  28.     enqueue(5, &q1);
  29.     enqueue(6, &q1);
  30.     enqueue(7, &q1);
  31.     enqueue(8, &q1);
  32.     enqueue(9, &q1);
  33.  
  34.     //print_queue(&q1);
  35.  
  36.     while (n / m > 0) // 9/2=4>0
  37.     {
  38.         if (counter < m)
  39.         {
  40.             dequeue(&q1, &value);
  41.             enqueue(value, &q1);
  42.             counter++;
  43.         }
  44.  
  45.         else
  46.         {
  47.             dequeue(&q1, &value);
  48.             printf("%d\t", value);
  49.             counter = 1;
  50.             n--;
  51.         }
  52.     }
  53.  
  54.     while (n / m == 0 && n > 0)
  55.     {
  56.         dequeue(&q1, &value);
  57.         printf("%d\t", value);
  58.         n--;
  59.     }
  60.  
  61.     return 0;
  62. }
  63.  
  64.  
  65. /* Pseudo-Code
  66.  
  67. Alg-Josephus:
  68.  
  69. Q = create_queue
  70.  
  71. N = num of people
  72. M = every m person exists the circle
  73. Counter = 1 //counter that resets after every success
  74.  
  75. While n / m > 0: // there is no remainder
  76.     if counter < m:
  77.         x < dequeue(q)
  78.         enqueue(x,q)
  79.         counter++
  80.    
  81.     else: // counter = m
  82.         x < dequeue(q)
  83.         print(x)
  84.         n = n-1 // num of people decreases
  85.         counter = 1 // counter resets
  86.  
  87.  
  88. While(n > 0 and n / m == 0): // There is remainder
  89.     x < dequeue(q)
  90.     print(x)
  91.     n = n-1
  92.  
  93. // end
  94.    
  95. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement