约瑟夫环问题

/**
*使用数组实现约瑟夫环问题
*由m个人围成一个首尾相连的圈报数。
*从第一个人开始,从1开始报数,报到n的人出圈,
*剩下的人继续从1开始报数,直到所有的人都出圈为止。
*对于给定的m和n,求出所有人的出圈顺序.
*/

以下是解答该问题的objective-c语言写法:

    NSMutableArray *arr1 = [NSMutableArray array];

    for (int i=1; i<=100; i++)

    {

        [arr1 addObject:[NSNumber numberWithInt:i]];

    }

    

    self._index = 0;

    

    [self Out:arr1 startIndex:0];



- (void) Out:(NSMutableArray *)arr1 startIndex:(NSInteger)index

{

    NSInteger nTotalIn = [arr1 count];

    if (nTotalIn >= 7)

    {

        NSNumber *n1;


        if ((index+6) <= (nTotalIn-1))

        {

            n1 = [arr1 objectAtIndex:index+6];

            index += 6;

        }

        else

        {

            n1 = [arr1 objectAtIndex:index+6-nTotalIn];

            index = index+6-nTotalIn;

        }

        

        NSLog(@"%d\n",n1.intValue);

        

        [arr1 removeObjectAtIndex:index];

        [self Out:arr1 startIndex:index];

    }

    else

    {

        NSLog(@"done!\n");

    }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值