首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-03-04 
Josephus函数运行出错,帮忙改一下,谢谢#includeiostream.hvoidJosephus(intarr[],intn,ints,intm){inti,

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

热点排行