码迷,mamicode.com
首页 > 编程语言 > 详细

5.约瑟夫问题(数组法)

时间:2016-03-14 09:36:13      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:

另一种解法:将数组全部置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.约瑟夫问题(数组法)

标签:

原文地址:http://www.cnblogs.com/tinaluo/p/5274563.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!