public class Count3Quit3 {
public static void main(String[] args) {
//用数组模拟链表
//初始化
int[] a = new int[500];
for(int i=0; i<a.length - 1; i++) {
a[i] = i+1;
}
a[a.length - 1] = 0;
//从这里解释
int leftCount = a.length;
int lastIndex = a.length-1, index = 0;

int num = 0; while(leftCount > 1) {
num ++;
if(num == 3) {
num = 0; 
leftCount --;
a[lastIndex] = a[index];
}
lastIndex = index;
index = a[index];


}

for(int i=0; i<a.length; i++) {
//System.out.println("a[" + i + "]:" + a[i]);
if(a[i] == i) {
System.out.println(a[i]);
}
}

}
}
望好心人解答,就是主循环的意思,还有两个变量什么意思。

解决方案 »

  1.   


    //一共有多少包盐
    int leftCount = a.length;
    //最后那包盐
    int lastIndex = a.length-1,
    //第一包盐
    index = 0;
    //仅仅是奸商拿来计算的计数器
    int num = 0;//如果还有盐
    while(leftCount > 1) {//涨一块钱
    num ++;
    //涨到三块的时候
    if(num == 3) {
    //重置计数器
    num = 0; 
    //卖掉一包盐 
    leftCount --;
    //把第一包盐放到最后那包盐的位置 
    a[lastIndex] = a[index];
    }
    //告诉别人卖掉一包盐了(最后那包)
    lastIndex = index;
    //把第一包盐的位置挪到第二包盐上 因为index从0开始,它的价格是i(i从零开始)+1就是
    // 第一次a[index]就是1 以此类推  index 就会一直往前增加1块钱
    index = a[index];
    }//物价局和工商局干涉之后,要求奸商把钱拿出来查账!
    for(int i=0; i<a.length; i++) {
    //System.out.println("a[" + i + "]:" + a[i]);
    if(a[i] == i) {
    System.out.println(a[i]);
    }