读书人

Josephus函数运行出错帮忙改一下多

发布时间: 2012-03-04 11:13:34 作者: rapoo

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;就可以了

读书人网 >C++

热点推荐