题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下1个人的是原来第几号的那位
思路:声明数组,所有人初始状态位true,然后遍历数组,循环条件为总人数-1 遍历开始,count++,count到3,count清零,数组当前下标改为false,总人数-1,当数组下标等于总人数之后,下标清零,从头开始遍历,最后输出数组中剩下的true。这么说也需不太清楚,直接上代码
package main import "fmt" func main() { const n = 7 index:=0//遍历数组 count:=0//计数器 sum:=0//统计退出的人数 arr := [n] bool{} fmt.Println(arr) for i:=0;i<len(arr);i++{ arr[i] = true } fmt.Println(arr) for sum < n - 1{ //sum :0 if arr[index] == true{ // index:0,1,2,3 count++ // 1,2,3 if count == 3{ count = 0 sum++ // 1,2,3 arr[index] = false } } index++ // 1,2,3 if index == n{ index = 0 } } //输出结果 for i:=0;i<len(arr);i++{ if arr[i]==true{ fmt.Println(i+1) } } fmt.Println(arr) }