Josephus函数运行出错,帮忙改一下,谢谢
#include <iostream.h>
void Josephus( int arr[], int n, int s, int m )
{
int i, j;
int number = 0;
// Initialize
for ( i=0 ; i <n ; i++ )
{
arr[i] = 1;
}
i = s - 1;
while ( number < n )
{
for ( j=0 ; j <m ; )
{
i = (i+1) % n;
if ( arr[i] == 1 )
{
j++;
}
}
arr[i] = -1;
cout < <i < < '\t ';
number++;
}
cout < <endl;
}
void main()
{
int array[5];
Josephus(array, 5, 1, 2);
}
运行结果:2 4 1 0 3
这个显然不对嘛
[解决办法]
正确的应该是35214吧?
你在输出 那里输的是数组下标,下标跟序号是差一个的.应该cout < <i+1;就可以了