易截截图软件、单文件、免安装、纯绿色、仅160KB

Java面试题:猫吃老鼠问题

问题:现有n个老鼠围成一圆圈,有一只猫从任意位置开始吃老鼠,每次都隔一个老鼠吃,请给出最后一个老鼠的编号?题目要求是任给老鼠数n,输出猫最后吃的老鼠的编号。
我的解法:
1.简单的方法就是模拟这个过程。使用一个数组代表老鼠是否被吃掉,循环遍历。
2.改进一下的方法,其实这个问题就是一个m=2的约瑟夫环问题。
package com.easyProblem;
/*
* 现有n个老鼠围成一圆圈,有一只猫从任意位置开始吃老鼠,每次都隔一个老鼠吃,
* 请给出最后一个老鼠的编号?题目要求是任给老鼠数n,输出猫最后吃的老鼠的编号
*/
public class CatEatMouseProblem {
private int[] m;

public static void main(String[] args) {
CatEatMouseProblem cm = new CatEatMouseProblem();
System.out.println("=======低效的方法========");
long startTime =System.currentTimeMillis();
System.out.println(cm.easyWork(1111178));
long endTime=System.currentTimeMillis();
System.out.println("耗时:" + (endTime-startTime));

System.out.println("=======改进的方法========");
startTime =System.currentTimeMillis();
System.out.println(cm.betterWork(1111178));
endTime=System.currentTimeMillis();
System.out.println("耗时:" + (endTime-startTime));

}
public int easyWork(int n){
m = new int[n];

int mouse = n;
int flag = 0;

m[0] = 1;
mouse--;

while(mouse>1){
flag = next(next(flag));
m[flag] = 1;
mouse--;
}
return next(flag)+1;
}

public int next(int start){
for(int i=start+1; i<start+m.length; i++){
int pos = i%(m.length);
if(m[pos]!=1) {
return pos;
}
}
return -1;
}

public int betterWork(int n){
int m = 2;
int s = 0;
for(int i=2; i<=n-1; i++) s=(s+m)%i;
return s+2;
}

=======低效的方法========
125204
耗时:953
=======改进的方法========
125204
耗时:31


相关文档:

java反射机制


package com.infowarelab.java.test;   
  
import java.lang.reflect.Field;   
import java.lang.reflect.Method;   
  
public class ReflectTester {   
    @SuppressWarnings("unchec ......

java虚拟机使用内存的思考

关于java虚拟机使用内存的思考
 JVM(java虚拟机)其实就是操作系统(如windows)上的一个普通程序(进程名叫java,这个程序可以解释执行class文件)。
 当java进程启动时会首先分配一块堆内存(最小内存),以后每当class字节码程序要求JVM(java进程)分配内存时,JVM
 就会在预先分配的那块内存上面为class字节 ......

java获取当前路径

java获取当前路径
 
1、利用System.getProperty()函数获取当前路径:
System.out.println(System.getProperty("user.dir"));//user.dir指定了当前的路径
2、使用File提供的函数获取当前路径:
File directory = new File("");//设定为当前文件夹
try{
    System.out.println(directory.getCano ......

java心得!

 java心得!--很好的java学习历程(转自张国宝) 收藏 此文于2009-10-26被推荐到CSDN首页
如何被推荐?
1.    数组有没有length()这个方法? String有没有length()这个方法?
        答:数组没有length()这个方法,有length的属性。
     ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号