5.约瑟夫问题(数组法)
Posted YuRi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5.约瑟夫问题(数组法)相关的知识,希望对你有一定的参考价值。
另一种解法:将数组全部置1,累计相加到报数,则将该位置置为0,意为该位出列,如此反复。关键在于:把数组作环状处理,这个手法已经演练很多遍了!
/*------------完整代码@映雪-------------*/ #include <iostream> using namespace std; int main() { int count=0,s=0,i,j=-1,n=3,m=3; int a[100]; for(i=0;i<n;i++)/*将数组全部置1*/ a[i]=1; while(count<n) { j=(j+1)%n; s=s+a[j]; if(s==m)/*累加到报数*/ { a[j]=0;/*位置置0,表示出列*/ s=0; count++;/*出列计数+1*/ printf("%d ",j+1); } } return 0; }
以上是关于5.约瑟夫问题(数组法)的主要内容,如果未能解决你的问题,请参考以下文章