题目大概是这样:小孩玩游戏,手拉手围成一个圈,然后数数.每次数到3的时候这个小孩退出,下一个从1开始再数. 试问,如果有500个小孩,最后剩下的小孩是原来的第多少个小孩.
开始想的时候觉得很有意思,然后就试着写代码实现。试了几种写法,先发一个比较满意的
public class ChildThreeDel { public static void main(String[] args) { bool[] arr = new bool[500]; for (int i = 0; i < arr.Length; i++) { arr[i] = true; } int _count = arr.Length; int countNum = 0; int index = 0; while (_count > 1) { if (arr[index] == true) { countNum++; if (countNum == 3) { countNum = 0; arr[index] = false; leftCount--; } } index++; if (index == arr.Length) { index = 0; } } for (int i = 0; i < arr.Length; i++) { if (arr[i] == true) { Console.WriteLine(i+1); } } Console.Read(); } }