约瑟夫问题
N个人围成一圈,第一个人从1开始报数,报M的将被杀掉,下一个人接着从1开始报。如此反复,最后剩下一个,求最后的胜利者。
求解过程
单次求解过程
- 单独一人
直接返回1 - 通用过程
当前编号 | 执行后编号 |
---|---|
1 | n-m+1 |
2 | n-m+2 |
... | ... |
m-1 | n-1(n-m+m-1) |
m | 0(剔除) |
m+1 | 1 |
... | ... |
n-1 | n-1-m |
n | n-m |
int f(int n, int m)
{
return n == 1 ? n : (f(n - 1, m) + m - 1) % n + 1;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?