• java丢手帕 约瑟夫问题


    一、问题描述: 
        n个人围成一个圈,编号为1~n,从第一号开始报数,报到3的倍数的人离开,一直数下去,直到最后只有一个人,求此人编号。 

    二、问题提示: 

         使用一维数组,数组元素初始为1,从1开始把数字放进数组空间,若数组元素为3的倍数,则把其置0,循环下去直到计数器(counter)减为1,则跳出循环并输出其数组下标 

    Java代码  收藏代码
      1. import java.util.Scanner;  
      2.   
      3. public class Test {  
      4.   
      5.     /** 
      6.      * @param args 
      7.      */  
      8.     public static void main(String[] args) {  
      9.         // TODO Auto-generated method stub  
      10.   
      11.         System.out.println("请输入一个数字:");  
      12.         Scanner scan = new Scanner(System.in);  
      13.         int n = scan.nextInt();  
      14.         int counter = n;// 计数器  
      15.         int num = 1;// 数数  
      16.         int[] array = new int[n];// 声明数组  
      17.   
      18.         for (int i = 0; i < array.length; i++) {// 数组初始化  
      19.             array[i] = 1;  
      20.         }  
      21.         while (counter > 1) {  
      22.             for (int j = 0; j < array.length; j++) {  
      23.                 if (array[j] != 0) {// 如果数组元素不为0,则从1开始赋值  
      24.                     array[j] = num;  
      25.                     if (num % 3 == 0) {// 如果赋给数组元素的数能够整除3,则把此数组元素置0,计数器减1(即踢掉一个人)  
      26.                         array[j] = 0;  
      27.                         counter = counter - 1;  
      28.                         if (counter == 1) {// 如果最后只剩下一个人,跳出循环  
      29.                             break;  
      30.                         }  
      31.                     }  
      32.                     num = num + 1;  
      33.                 }  
      34.             }  
      35.         }  
      36.         for (int k = 0; k < n; k++) {  
      37.             if (array[k] != 0) {  
      38.                 System.out.println("最后赢家的编号为:" + (k + 1));  
      39.             }  
      40.         }  
      41.   
      42.     }  
      43.   
      44. }  
  • 相关阅读:
    域用户组策略禁用QQ等软件
    关于使用IDE制作样式表后不能正常显示的问题
    asp.net中使用ckfinder2选择图片并返回图片文件的路径的代码
    按规定长度显示指定绑定字段的内容
    ckeeditor和ckfinder在asp.net中的使用
    开发播放器中所学/用到的知识
    用户体验的网站首页设计的准则
    0410_gdgrid_checkbox_自己强加的多选,选中,批量删除
    0405_hxtx_主题游常用联系人功能代码实现
    0401flag
  • 原文地址:https://www.cnblogs.com/qiuh/p/3364819.html
Copyright © 2020-2023  润新知