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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

答案2..

答案2.zip

780 Bytes, 阅读权限: 70, 下载次数: 2

答案2

评分

参与人数 1技术分 +3 收起 理由
王震阳老师 + 3 赞一个!

查看全部评分

回复 使用道具 举报
Test2.zip (1.38 KB, 下载次数: 1)

评分

参与人数 1技术分 +2 收起 理由
王震阳老师 + 2 赞一个!

查看全部评分

回复 使用道具 举报
先看看问题再说。。。。
回复 使用道具 举报
sdfgsdfgsdfgsdfgfsg
回复 使用道具 举报
再试试              
回复 使用道具 举报
老师辛苦了……
回复 使用道具 举报
  1. package com.mxh.test;

  2. public class Test01 {
  3.         /*
  4.          * 需求:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),
  5.          *  凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
  6.          *  
  7.          *  思路:由题意可知解决本题的关键是循环,最后只剩一个人,因此条件是:只要不是一个人就循环。
  8.          *  用数组表示参加游戏的人,并为人编号,对数组进行初始化为123...。对数到3的人退出游戏,对他进行重新赋值为0。
  9.          *  遍历数组,输出不是0的数组元素。
  10.          */

  11.         public static void main(String[] args) {
  12.                 // TODO Auto-generated method stub
  13.                 try{
  14.                         new Youxi(9).begin();//参数为参加游戏的人数。
  15.                         }
  16.                 catch(Exception e){
  17.                         throw new RuntimeException("参加游戏的人数不能为小于0.");
  18.                 }
  19.         }

  20. }

  21. class Youxi {
  22.         //构造函数对数组进行初始化。123...
  23.         Youxi(int m) {
  24.                 arr = new int[m];
  25.                 for (int x = 0; x < m; x++) {
  26.                         arr[x] = x + 1;
  27.                 }
  28.                 y = arr.length;
  29.         }

  30.         int[] arr;
  31.         int x = 0;// 数组角标
  32.         int y;// 剩余游戏人数
  33.         int zhizhen = 1;//指针

  34.         public void begin() {
  35.                 while (y != 1) {
  36.                         if (arr[x] != 0) {
  37.                                 if (zhizhen % 3 == 0) {//对数到3的人赋值为0,同时人数减1
  38.                                         arr[x] = 0;
  39.                                         y--;
  40.                                 }
  41.                                 zhizhen++;//不管数没数到3都进行下一个人。
  42.                         }
  43.                         x++;
  44.                         if (x == arr.length) {//到数组末尾时,重新遍历。
  45.                                 x = 0;
  46.                         }
  47.                 }
  48.                 for (int x = 0; x < arr.length; x++) {
  49.                         if (arr[x] != 0)
  50.                                 System.out.println("最后留下的是原来第" + arr[x] + "号的那位。");
  51.                 }
  52.         }
  53. }
复制代码
不知道如何隐藏呀!

评分

参与人数 1技术分 +2 收起 理由
王震阳老师 + 2 有个标签可以隐藏的亲,你的代码都走光啦.

查看全部评分

回复 使用道具 举报
看下题目吧...
回复 使用道具 举报
看看,学习学习。。
回复 使用道具 举报
先看题。。。
回复 使用道具 举报
Lin0411 发表于 2014-5-1 10:19
看看,学习学习。。
  1. public class CirclePerson
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 System.out.println(leftMan(3)+"");
  6.         }
  7.        
  8.         public static int leftMan(int n)
  9.         {
  10.                
  11.                 int[] man = new int[n+1];
  12.                 for(int i=0; i<=n; i++)
  13.                 {
  14.                         man[i] = i;
  15.                 }
  16.                 int leftman = 0; //留下的人的号码
  17.                 int point = 0;   //指向数组元素的指针
  18.                 int left = 0;    //剔除的人数
  19.                 int count = 0;         //计数
  20.                 while(left < (n-1))
  21.                 {
  22.                         point++;
  23.                         if(man[point%(n+1)] != 0)
  24.                         {
  25.                                 count ++;
  26.                                 if(count == 3)
  27.                                 {
  28.                                         man[point%(n+1)] = 0;
  29.                                         left++;
  30.                                         count = 0;
  31.                                 }
  32.                         }
  33.                 }
  34.                 for(int i=1; i<=n; i++)
  35.                 {
  36.                         if(man[i] !=0)
  37.                         {
  38.                                 leftman = man[i];
  39.                                 break;
  40.                         }
  41.                        
  42.                 }
  43.                
  44.                 return leftman;
  45.         }
  46. }
复制代码

评分

参与人数 1技术分 +2 收起 理由
王震阳老师 + 2 代码怎么不隐藏一下呢亲

查看全部评分

回复 使用道具 举报
看看..........................
回复 使用道具 举报
约瑟夫环 比赛的时候遇到过

Main.rar

387 Bytes, 阅读权限: 100, 下载次数: 2

回复 使用道具 举报
题目不错
回复 使用道具 举报
  1. import java.util.Scanner;

  2. /*题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。*/
  3. public class Test {

  4.         public static void main(String[] args) {
  5.                 Scanner sc = new Scanner(System.in);
  6.                 int num = sc.nextInt();
  7.                 int[] s = new int[num];
  8.                 // 对数组进行初始化
  9.                 for(int i=0;i<num;i++)
  10.                 {
  11.                         s[i]=i+1;
  12.                 }
  13.                 //定义temp 标记量  
  14.                 int temp=0;
  15.                 //用num记录剩余人数 每出去一个 num--  当剩余1人是结束
  16.                 for(int i=0;num>1;i++)
  17.                 {
  18.                        
  19.                         if(i==s.length){//当循环到数组尾部时 把i的值归0
  20.                                 i=0;
  21.                         }
  22.                         if(s[i]!=0){//当s[i]的值不等于0的时候 temp增加
  23.                                 temp++;
  24.                         }
  25.                         if(temp==3){ //当temp的值为3时
  26.                                 s[i]=0; // 去人  
  27.                                 num--;  //剩余人数减1
  28.                                 temp=0; //temp归零
  29.                         }
  30.                 }
  31.                 int sum=0;
  32.                 //剩余的人 就是数组中最后剩下的数
  33.                 for(int i=0;i<s.length;i++)
  34.                 {
  35.                         sum+=s[i];
  36.                 }
  37.                 System.out.println("最后留下的是"+sum+"号");
  38.         }

  39. }
复制代码


评分

参与人数 1技术分 +3 收起 理由
王震阳老师 + 3 很给力!

查看全部评分

回复 使用道具 举报
我要技术分
回复 使用道具 举报
看看懂不
回复 使用道具 举报
哈哈!用了一个超级麻烦的方法搞出来了!!!希望不要太丢人。

QJ.zip

575 Bytes, 阅读权限: 150, 下载次数: 2

回复 使用道具 举报
搞定                           

test2.zip

898 Bytes, 阅读权限: 100, 下载次数: 1

评分

参与人数 1技术分 +3 收起 理由
王震阳老师 + 3 赞一个!

查看全部评分

回复 使用道具 举报
看一下题哦~~~~~~~~~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马