深圳华鑫峰网站建设,wordpress acction,简洁大方 网站,百度关键词首页排名服务题目#xff1a; 有n个孩子站成一圈#xff0c;从第一个孩子开始顺时针方向报数#xff0c;报到3的人出列#xff0c;下一个人继续从1报数#xff0c;直到最后剩下一个孩子为止。问剩下第几个孩子。 (另一种题型 - 约瑟夫环 - 递归算法 http://www.cnblogs.com/… 题目 有n个孩子站成一圈从第一个孩子开始顺时针方向报数报到3的人出列下一个人继续从1报数直到最后剩下一个孩子为止。问剩下第几个孩子。 (另一种题型 - 约瑟夫环 - 递归算法 http://www.cnblogs.com/yangyh/archive/2011/10/30/2229517.html) 分析 数到3的人退出可暂将此人的去留状态修改。 正确代码 写法1 1 public static void main(String[] args) {2 // n为在对人数,out为当前出列的人 3 int n0,out0;4 Scanner sc new Scanner(System.in);5 int aa sc.nextInt();6 int[] a new int[aa];7 8 while(true){9 for (int i 0; i a.length; i) {
10 if(a[i]0){
11 n;
12 if(n3){
13 a[i]1;
14 n0;
15 out;
16 if(outaa){
17 // 直接显示最后一个人
18 System.out.println(i1);
19 }
20 // 显示过程中每次出列的人
21 // System.out.println(出列(i1));
22 }
23 }
24 }
25 if(outaa) break;
26 }
27 } 写法2(ZB) public class Yuesefu {public static void main(String[] args) {Scanner scanner new Scanner(System.in);int n scanner.nextInt();int [] arr new int[n];int count 0;int sum 0;for (int i 0; sum arr.length -1; i) {if (iarr.length) {i 0;}if (arr[i] 0) {count ; }if (count 3) {arr[i] 1;count 0;sum;}}for (int i 0; i arr.length; i) {if (arr[i] 0) {System.out.println(i1); }}}
} 转载于:https://www.cnblogs.com/sweetheartly/p/5777697.html