A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王震阳老师   /  2014-4-30 11:29  /  21532 人查看  /  342 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

跪求技术分
回复 使用道具 举报
本帖最后由 罗中扬 于 2014-6-10 15:38 编辑

  1. public class Test7 {
  2.         /**
  3.          * 题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
  4.          * 约瑟夫环问题;
  5.          * 通过分析:我们可以的到一个约瑟夫环问题的递推公式
  6.          * 递推公式   f[1]=0;
  7.      *        f[i]=(f[i-1]+m)%i;
  8.      *      (住:这个公式不是并不是我推出来的)
  9.          * 通个这个公式就可以很方便的秋出最后一个人,但是无法还原过程
  10.          */
  11.         public static void main(String[] args) {
  12.                 int n = 5;  //总人数
  13.                 int m  = 3;   //每次要退出的数
  14.                 int s = 0;
  15.                
  16.                 for(int i = 2;i<=n;i++){
  17.                         s= (s+m)%i;
  18.                 }
  19.                 //实际生活中编号总是从1开始,我们输出f[n]+1(也就是s+1)
  20.                 System.out.println(s+1);
  21.         }
  22. }
复制代码

回复 使用道具 举报

以前记得上大一的时候讲C语言基础,老师提过这种简便方法。
回复 使用道具 举报

是不是要打一个包啊
回复 使用道具 举报
楼主吉祥

Test7.rar

619 Bytes, 下载次数: 237

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马