大学课程里面的老问题,Google一下答案一大把

解决方案 »

  1.   

    这个是java经典题目,百度或谷歌就可以了
      

  2.   

    public class LastOne {
        public static void main(final String[] args) {
            System.out.println( getLastOne(11, 3) );
        }    public static int getLastOne (final int totalNumberOfPeople, final int leaveNumber) {
            int theLastOne = 0;        int remainNumberOfPeople = totalNumberOfPeople;
            int leaveIndex = 1;        boolean[] isValidPeopleArray = new boolean[totalNumberOfPeople + 1];
            int isValidPeopleIndex = 1;        for (isValidPeopleIndex = 1; isValidPeopleIndex <= totalNumberOfPeople; isValidPeopleIndex++) {
                isValidPeopleArray[isValidPeopleIndex] = true;
            }        isValidPeopleIndex = 1;
            while (remainNumberOfPeople > 1) {
                if (isValidPeopleArray[isValidPeopleIndex]) {
                    if (leaveIndex == leaveNumber) {
                        isValidPeopleArray[isValidPeopleIndex] = false;
                        remainNumberOfPeople --;//                    for (int ii = 1; ii <= totalNumberOfPeople; ii++) {
    //                        if (isValidPeopleArray[ii]) {
    //                            System.out.print(ii + " ");
    //                        }
    //                    }
    //                    System.out.println("");                } else {
                        /* Do Nothing */
                    }                leaveIndex ++;
                    if (leaveIndex > leaveNumber) {
                        leaveIndex = 1;
                    }
                } else {
                    /* Do Nothing */
                }            isValidPeopleIndex ++;
                if (isValidPeopleIndex > totalNumberOfPeople) {
                    isValidPeopleIndex = 1;
                }
            }        for (isValidPeopleIndex = 1; isValidPeopleIndex <= totalNumberOfPeople; isValidPeopleIndex++) {
                if (isValidPeopleArray[isValidPeopleIndex]) {
                    theLastOne = isValidPeopleIndex;
                    break;
                }
            }        return theLastOne;
        }
    }
      

  3.   

    这里有个使用了JAVA语言特性的更简答的解法,请参考
    http://www.oschina.net/question/1251537_123179我的方法虽然相对繁琐一些,但是应该比较容易移植到其他语言上