小白也能看懂的约瑟夫环问题

Roselani ·
更新时间:2024-09-20
· 563 次阅读

首先,我先澄清一下标题,我是小白,我看懂了(●ˇ∀ˇ●)

约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。通常解决这类问题时我们把编号从0~n-1,最后 结果+1即为原问题的解。

如果还看不懂问题,杨帆兄简单易懂的约瑟夫环

PS:

首先附上代码
这个代码是一共n个人,每次淘汰数到k的个人,问最后剩下的是第几个人

import java.util.Scanner; public class 约瑟夫环 { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(), k = in.nextInt(); int p = 0; for (int i = 2; i <= n; i++) { p = (p + k) % i; } System.out.println(p + 1); } }

原题是问最后剩下的那个人是几号,可以这么想
按照正常的逻辑是,最后一个淘汰的人是谁,
既然是这样,我们反过来想,
我们可以是开局一个人,
原创文章 1903获赞 3万+访问量 651万+ 关注 他的留言板 展开阅读全文
作者:南 墙



约瑟夫环问题 约瑟夫环

需要 登录 后方可回复, 如果你还没有账号请 注册新账号