本帖最后由 石头6004 于 2013-11-27 11:43 编辑
上面用循环链表实约瑟夫问题,要模拟整个游戏过程,不仅程序写起来比较麻烦,而且时间复杂度高达O(nm),当n,m非常大(例如上百万,上千万)的时候,几乎是没有办法在短时间内出结果的。 这里用递推来写: - package cn.itcast;
- public class Josephus {
- public static void main(String[] args) {
- int n= 10, m = 3, i, s=0;
- for (i=2; i<=n; i++)
- s=(s+m)%i;
- System.out.println("The winner is:" + (s+1));
- }
- }
复制代码
|