以前在一个笔试的时候考到过。。。
类似的问题。
http://wenku.baidu.com/view/179cb419a8114431b90dd896.html###
package com.huawei.job.endual.que1.main; class YueSheFuQuestion { private int[] arrPosition; // 每个人的位置 private int[] arrSecret; // 每个人对应的密码 private int SECRET = 0; // 密码 public YueSheFuQuestion(int[] arrPosition, int[] arrSecret, int SECRET) { this.arrPosition = arrPosition; this.arrSecret = arrSecret; this.SECRET = SECRET; } public void printPeople() { int mCount = this.arrPosition.length; // 人的总数 System.out.println("mCount = " + mCount); int curPeopleCount = mCount; // 当前人的数量 int curCount = 1; // 当前数字的位置 int curSecret = this.SECRET; // 当前的位置 int curPosotion = 0; // 当前人的位置,从第一个人数 while (curPeopleCount != 0) {// 当前的数目只有一个人的时候,就停止 if (arrPosition[curPosotion] == -1) { // 这个人已经出局的 curPosotion = curPosotion + 1; // 当前人的位置加1 if (curPosotion == mCount) { // 如果当前人的位置数量大于了人的总是,那么就循环了 curPosotion = 0; // 从第一人开始了 } //curCount = curCount + 1; // 当前报数添加一个 } else { // 没有出局的 if (curCount == curSecret) { // 当前数数是否等于当前的密码 System.out.print("Position-->" + arrPosition[curPosotion] + "||"); // 打印出当前的位置 curSecret = arrSecret[curPosotion]; // 把密码赋值给当前的密码 arrPosition[curPosotion] = -1; // 当前的位置出局 curPeopleCount--; // 当前的数目要减去一个 curPosotion = curPosotion + 1; // 当前人的位置加1 if (curPosotion == mCount) { // 如果当前人的位置数量大于了人的总是,那么就循环了 curPosotion = 0; // 从第一人开始了 } curCount = 1; // 从1开始了数了 } else { // 如果是不相等的 curPosotion = curPosotion + 1; // 当前人的位置加1 if (curPosotion == mCount) { // 如果当前人的位置数量大于了人的总是,那么就循环了 curPosotion = 0; // 从第一人开始了 } curCount = curCount + 1; // 当前报数添加一个 } // end else2 } // end else1 } // end while } // end printPeople } // end class
package com.huawei.job.endual.que1.main;
public class MainRun { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int mCount = 7 ; int[] arrPosition = new int[7] ; int[] arrSecret = new int[7] ; for (int i=0; i < mCount; i++) { arrPosition[i] = i+1 ; System.out.print(arrPosition[i] + "||"); } System.out.println("----"); for (int i=0; i < mCount; i++) { int random = (int)(Math.random()*100) ; arrSecret[i] = random ; System.out.print(arrSecret[i] + "||"); } System.out.println("----"); int secret = (int)(Math.random()*1000) ; System.out.println("secret=" + secret); //arrPosition = [] ; //int[] arrSecretx = {3,1,7,2,4,8,4} ; //secret = 20 ; YueSheFuQuestion yQue = new YueSheFuQuestion(arrPosition,arrSecret,secret) ; yQue.printPeople() ; } }
扫描二维码关注公众号,回复:
1320208 查看本文章
效率很不高,但是应付笔试完全没有问题了