当前位置:网站首页>Detailed explanation of Joseph problem
Detailed explanation of Joseph problem
2022-06-13 01:09:00 【dddd_ jj】
1. What is Joseph's problem
It has a number of 1,2,……,n Of n(n>0) A circle of individuals , From 1 Individual starts counting , To report for duty m Stop reporting when , newspaper m People out of circles , And then from his next person to report , To report for duty m Stop reporting when , newspaper m Out of the loop ,……, Go on like this , Until everyone is out of the circle . When any given n and m after , Design algorithm n The order in which individuals go out of circles .
2. Violence solution
The most direct method is to simulate the process of counting . simulation n-1 The process of counting off the number of times , Report data each time m personal , The first m Individuals are eliminated . Finally, check which number did not check in , This number is the result .# Learning goals :
But the time complexity is O(m*n). So when m and n When you're older , The running time of the program will be very long .
3. Recursive formula solution
Step one : Definition f(n)
take n Personal count , newspaper m The problem of people out of the circle is regarded as f(n,m) problem , And let the solution of the problem be f(n). that n-1 Personal count , newspaper m The problem of people out of the circle is regarded as f(n-1,m) problem , And let the solution of the problem be f(n-1).
| f(n,m) | n Personal count , newspaper m People out of circles |
|---|---|
| f(n-1,m) | n-1 Personal count , newspaper m People out of circles |
| … | … |
| f(1,m) | 1 Personal count , newspaper m People out of circles |
Step two find f(n) And f(n-1) The relationship between
Assume that at the beginning, everyone's serial number is :
1 2 3 … n-1 n
So after the first count off , Only the following people are left :
1 2 3 … m-1 m+1 … n-1 n
And after the next count off , from m+1 Start counting , So the serial number should change to :
m+1 m+2 …n-1 n 1 2 3 … m-1
( Let the serial number here be x)
Map the above serial number to the following serial number :
1 2 3 … n-2 n-1
( Let the serial number here be y)
be x and y What's the relationship :
x=(y+m)%n
among , The serial number here x It stands for f(n,m) The serial number in , Serial number y It stands for f(n-1,m) The serial number in . that f(n) And f(n-1) What's the relationship
f(n) =( f(n-1)+m )%n
f(n-1)=( f(n-2)+m )%(n-1)
f(n-2)=( f(n-3)+m )%(n-2)
…
f(2)=( f(1)+m )%2
f(1)=1
f(1)=1 Because there is only one person , It must be the last one left , Serial number is 1.
Step three Write code according to recurrence formula
According to the recurrence formula ,f(1)=1 after , Then you can get the answer from the bottom up . Get it first f(2). Ask again f(3) until f(n). So here's the code .
int yuesefu(int n, int m) {
int x = 1;
for (int i = 2; i <= n; i++) {
x = (x + m) % i;
}
return x;
}
边栏推荐
猜你喜欢

pycharm add configutions

Jenkins continuous integration operation

Kotlin coroutine suspend function suspend keyword

FLIP动画实现思路
![[JS component library] drag sorting component](/img/f9/4090b52da1a5784b834cb7dbbb948c.jpg)
[JS component library] drag sorting component
![[JS] battle chess](/img/1f/83ca6bcb000a5567dc6d3b72463ff8.jpg)
[JS] battle chess

Common skills for quantitative investment - drawing 2: drawing the moving average

切线与切平面

Liu Hui and introduction to nine chapter arithmetic and island arithmetic

Traditional machine learning classification model predicts the rise and fall of stock prices
随机推荐
Common skills of quantitative investment - index part 2: detailed explanation of BOL (Bollinger line) index, its code implementation and drawing
Characteristics of transactions - persistence (implementation principle)
Install pycharm process
Key point detection data preparation and model design based on u-net Network -- detection model of four key points of industrial components
Three threads print digital demo alternately
Sequence table - find main element
The tle4253gs is a monolithic integrated low dropout tracking regulator in a small pg-dso-8 package.
关于#数据库#的问题,如何解决?
Kotlin collaboration, the life cycle of a job
Pipeline pipeline project construction
Bubble sort - alternate sort at both ends
Wal mechanism of MySQL
Undirected graph -- computing the degree of a node in compressed storage
Liu Hui and introduction to nine chapter arithmetic and island arithmetic
Go simple read database
Dynamic planning - good article link
Deep learning model pruning
Illustrator tutorial, how to add dashes and arrows in illustrator?
Higherhrnet pre training model -- download from network disk
Leetcode-9-palindromes (simple)