约瑟夫环问题
//约瑟夫环的问题,使用数组来求解 int func1(int M,int N) { int k = 0; //设置一个计数器,累计变为0的数目 int Iscrircle =1;//设置标志位,是否继续循环下去 int* array = new int[M]; int nCount = 0;//设置另一个计数器,累计增加的次数 for (int i = 1;i<=M;i++) { array[i-1] = i; } int j = 0;//索引号 //循环 while(Iscrircle) { //判断是否已被赋值为0 if(array[j] != 0) { nCount++; } //赋值为零,还原计数器,增加计数器 if( nCount == N) { array[j] = 0; nCount = 0; k ++; } //索引值增加 j++; //索引值超界 if(j>M-1) { j = j-M-1; } if( k == M-1) { Iscrircle =0; } } return j+1; }