当前位置:网站首页>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;
}
边栏推荐
- [JS component library] drag sorting component
- leetcode. 541. reverse string II
- Matrix fast power
- Alexnet implements image classification of caltech101 dataset (pytorch Implementation)
- [JS] battle chess
- Pytorch's leafnode understanding
- Undirected graph -- computing the degree of a node in compressed storage
- Introduction to convolutional neural network
- [backtrader source code analysis 7] analysis of the functions for calculating mean value, variance and standard deviation in mathsupport in backtrader (with low gold content)
- Physical orbit simulation
猜你喜欢

leetcode 142. Circular linked list II

Traditional machine learning classification model predicts the rise and fall of stock prices under more than 40 indicators

Status of the thread
![[JS component] dazzle radio box and multi box](/img/2a/00620bee312972db93e1db4313385f.jpg)
[JS component] dazzle radio box and multi box

切线与切平面

Stmarl: a spatio temporal multi agentreinforcement learning approach for cooperative traffic

Cards are unpredictable

The scope builder coroutinescope, runblocking and supervisorscope of kotlin collaboration processes run synchronously. How can other collaboration processes not be suspended when the collaboration pro

Tangent and tangent plane

What is pytorch? Explain the basic concepts of pytorch
随机推荐
Deep learning model pruning
Remove duplicates from an ordered array
(01). Net Maui actual construction project
HashSet underlying source code
Dynamic planning - good article link
Jenkins持续集成操作
刘徽与《九章算术》《海岛算经》简介
How many rounds of deep learning training? How many iterations?
Liu Hui and introduction to nine chapter arithmetic and island arithmetic
Leetcode-9-palindromes (simple)
[JS component] custom paging
Rotating camera
FLIP动画实现思路
Understanding of the detach() function of pytorch
[JS component] floating text
Traditional machine learning classification model predicts the rise and fall of stock prices under more than 40 indicators
MySQL transaction
Opencv desaturation
How to handle different types of data
[JS component] simulation framework