请解释一下代码 josephus 问题
int main(int argc, char* argv[])
{
const int num = 10;
int interval;
int a[num];
for(int i = 0;i < num; i++)
a[i] = i + 1;
cout < < "please input the interval: ";
cin> > interval;
cin.get();
for(int i = 0;i <num;i++)
{
cout < <a[i] < < ", ";
}
cout < <endl;
int k = 1;
int m = -1;
while(1) //??????
{
for(int j = 0; j < interval;)
{
m = (m + 1)%num; //?????
if(a[m]!=0) //??????
j++;
}
if(k == num) break;
cout < <a[m] < < ", ";
a[m]= 0;
k++;
}
cout < < "\nNo. " < <a[m] < < " boy 's win\n ";
cin.get();
请解释下后面打问号的代码
最难让我理解的是 while(1) 这是怎么回事呢? 请高手解答,谢谢!
[解决办法]
while(1) //??????死循环到break退出为止
{
for(int j = 0; j < interval;)
{
m = (m + 1)%num; //?????取m+1的个位数
if(a[m]!=0) //??????如果a[m]的值不为0
j++;
}
[解决办法]
while(1)
========
不达目的不罢休
[解决办法]
while (1) 这种写法 其实是利用C/C++ 语言 的特性,在逻辑表达式里所有的非0 值都被当成true. 这里的意思就是while 条件永远都成立,在if (k==num) break; 退出这个while 循环.
建议仔细看看C 语言