本文共 663 字,大约阅读时间需要 2 分钟。
int LastRemaining(unsigned int n, unsigned int m){ if(n < 1 || m < 1) return -1; unsigned int i = 0; list numbers; for(i = 0; i < n; ++ i) numbers.push_back(i); list ::iterator current = numbers.begin(); while(numbers.size() > 1) { for(int i = 1; i < m; ++ i) { current ++; if(current == numbers.end()) current = numbers.begin(); } list ::iterator next = ++ current; if(next == numbers.end()) next = numbers.begin(); -- current; numbers.erase(current); current = next; } return *(current);}