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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

package com.itheima;
/**
* 10、有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。
* 然后其他人重新开始,从1报数,到14退出。问:最后剩下的是100人中的第几个人?
* @author Administrator
*
*/

public class Test10 {
       
        public static void main(String[]args){
//                创建一个长度为100的数组
                int[]array=new int[100];
//                被剔除的数字
                int outNum=0;
//                变量
                int j=1;
                int n=0;
//                将1-100添加到数组
                for(int i=0;i<array.length;i++){
                        array[i]=i+1;
                }
//                遍历数组
                while(outNum<array.length){
                       
                        if(array[(j-1)%array.length]!=-1){
       
                                n++;
//                                将数到14的人“干掉”
                                if(n==14){
                                        n=0;
                                        outNum++;
//                                        将干掉的数赋值给
                                        int p=array[(j-1)%array.length];
//                                        输出最后一个
                                        if(outNum==100){
                                        System.out.println("最后剩下的是100人中的第"+p+"个人");
                                        }
                               
                                        array[(j-1)%array.length]=-1;
                                }
                        }
                        j++;
                }
        }
       
}



7 个回复

倒序浏览
不错啊 学习了
回复 使用道具 举报
恩恩  挺不错的  谢谢分享
回复 使用道具 举报
约瑟夫环
回复 使用道具 举报

大神把代码分享一下吧
回复 使用道具 举报
之前试过类似的题,不过使用链表做的,学习一下大神是如何用数组实现
回复 使用道具 举报
dreamwork 发表于 2016-4-15 23:01
大神把代码分享一下吧

基础视屏中就有,很简单的.我就不摘抄了
回复 使用道具 举报
{:3_47:}感谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马