Interview Question
Country: China
Interview Type: Phone Interview
#include<iostream>
using namespace std;
int josephus(int n, int k)
{
if (n == 1)
{
return 1;
}
else
{
// The position returned by josephus(n - 1, k) is adjusted because the recursive call
// josephus(n - 1, k) considers the original position (k%n + 1) as position 1
return (josephus(n-1, k) + k-1) % n + 1;
}
}
int main()
{
int n;
int k;
cout << "Number of people in circle :";
cin >> n;
cout << "Number of people to skip :";
cin >> k;
cout << "Safe place to stand is :" << josephus(n, k) << endl;
return 0;
}
#include<iostream>
using namespace std;
int josephus(int n, int k)
{
if (n == 1)
{
return 1;
}
else
{
// The position returned by josephus(n - 1, k) is adjusted because the recursive call
// josephus(n - 1, k) considers the original position (k%n + 1) as position 1
return (josephus(n-1, k) + k-1) % n + 1;
}
}
int main()
{
int n;
int k;
cout << "Number of people in circle :";
cin >> n;
cout << "Number of people to skip :";
cin >> k;
cout << "Safe place to stand is :" << josephus(n, k) << endl;
return 0;
}
Read "Concrete mathematics". Also, read [ en.wikipedia.org/wiki/Josephus_problem ].
- NoOne February 09, 2018[ geeksforgeeks.org/josephus-problem-set-1-a-on-solution/ ]