Josephus problem | iCode



Today we are going to talk about the josephus problem and a codechef problem which is a variant of it.
Josephus problem:
It is the problem in which n people sits on a table and there is elimination of the kth next element. Like for example
Eg.
if n = 5 and k = 2
intially ,
1 2 3 4 5
1 3 4 5
1 3 5
3 5
3.

So three is the answer i.e. given a pair of n and k you have to output the last remaining element.

Solution
There is a very simple Dynamic Programming solution exists for the problem.
Let f(n,k) is the solution for the pair(n,k) ,then

f(n,k) = (f(n-1,k) + k) % n
Base case : f(1,k) =0

We have added k%n to the solution of the pair(n-1,k) because when we eliminate the kth element the (k + 1)th index is treated as 0th index for the f(n-1,k), so as to get the correct answer we have to shift the indices by k%n.

A variant of the problem:

A variant of the problem was asked in codechef recently, You should open the problem and read it first.So as you have read the problem , you might have understood that the above recursion will not work in this case, so we have to modify out recursion as follows:

f(n,k,m) = (f(n-1,k,m+1) + m*k) %n
Base case : f(1,k,m) =0


Read full article from Josephus problem | iCode


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts