public class Count3Quit2 {
public static void main(String args[]) {
int a[];                      
a = new int[500];            
for(int i = 0; i < 500; i++) {  
a[i] = i + 1;
}
a[499] = 0;                    
int num = 500;                
int countNum = 0;             
int i = 0, j = 0;
while(num > 1) {               
countNum ++;            
if(countNum == 3) {             
a[j] = a[i];       
countNum = 0;            
num--;                
}
if(countNum != 3) {
j = i;            
}
i = a[i];
}
System.out.println(a[i]+1);   
}
数三退一问题,用数组模拟链表实现的,while循环里的看不太懂,主要是i,j不知道是干吗的,请高手指教,如果有更好的方法请写出来,谢谢!!!

解决方案 »

  1.   

    ....
    public class Count3Quit2 {
    public static void main(String args[]) {
        int a[];                      
        a = new int[500];            
        for(int i = 0; i < 500; i++) {  
        a[i] = i + 1;
        }
        a[499] = 0; 
                                     
        //int countNum = 0;             
        int i = 0, j = 0;
        for(int countNum =1;countNum <=500;countNum ++) {             
            if(countNum %3 ==0) {  
                a[j] = a[i];
            }else{
                j = i;  
            }
        i = a[i];
        }
        System.out.println(a[i]+1);   
    }