问个数组的josephus问题
17个人围个圈报数,3的倍数的人离开,一直到最后一个人,然后求这个人的编号
程序如下:
#include <iostream.h> const int num=17; void main() { int interval=3; int a[num]; for(int m=0; m<num; m++) cout <<(a[m]=m+1) <<","; cout <<endl; int i=(interval-1)%num; for(int k=1; k<num; k++){ cout <<a[i] <<","; a[i]=0; for(int j=1; !(a[i]&&(j++==interval)); i=(i+1)%num); //数数 } cout <<"\nNo." <<a[i] <<" boy has won.\n"; //输出胜利者 }
程序我看的有点晕,特别是这句int i=(interval-1)%num 有点不太明白,请赐教~ 谢谢~