约瑟夫环问题

来源:互联网 发布:汪峰半壁江山知乎 编辑:程序博客网 时间:2024/06/03 22:48
约瑟夫环问题:使用有80个小朋友手拉手围成一圈,由第一个小朋友开始从1开始数,数到3的小朋友退出,再从后面的小朋友从1数起,数到3的再退出,以此游戏下去,问最后剩下哪个小朋友? 代码如下:public class Text3 {/** * 约瑟夫环问题 * @param args */public static void main(String[] args) {// TODO Auto-generated method stub//定义一个数组int[] array = new int[80];int m=0;//保存退出的人数int k=0;//保存报数1,2,3int i=0;//保存数组下标//给孩子进行编号for(int num=0;num<array.length;num++){array[num]=num+1;}//当退出的人数m小于(总人数-1)时进行循环while(m<array.length-1){//i从1-80进行循环for(i=0;i<array.length;i++){//从1开始计数到3if(array[i]!=0){k++;//当数到3时,给相应数组值赋值为0if(k==3){array[i]=0;m++;//退出人数加一k=0;//k重新开始计数}}}i=0;//当遍历完数组后,在从数组开始进行循环}//输出最后剩下的一个非零的数值for(int j=0;j<array.length;j++){if(array[j]!=0){System.out.println("最后剩下的小朋友是第"+array[j]+"个小朋友");}}}}运行结果为:31
0 0
原创粉丝点击