美文网首页
排列组合计算公式

排列组合计算公式

作者: 刘宇航iOS | 来源:发表于2018-10-29 09:22 被阅读7次
#pragma mark - 组合计算公式
- (NSMutableArray *)zuHeSuanFa:(NSMutableArray *)array chooseCount:(int)m
{
    int n = [array count];
    if (m > n)
    {
        return nil;
    }
    NSMutableArray *allChooseArray = [[NSMutableArray alloc] init];
    NSMutableArray *retArray       = [array copy];
    
    // (1,1,1,0,0)
    for(int i = 0;i < n;i++)
    {
        if (i < m)
        {
            [array replaceObjectAtIndex:i withObject:@"1"];
        }
        else
        {
            [array replaceObjectAtIndex:i withObject:@"0"];
        }
    }
    
    NSMutableArray *firstArray = [[NSMutableArray alloc] init];
    
    for(int i = 0; i<n; i++)
    {
        if ([[array objectAtIndex:i] intValue] == 1)
        {
            //            [firstArray addObject:[NSString stringWithFormat:@"%d",i+1]];
            [firstArray addObject:[retArray objectAtIndex:i]];
        }
    }
    
    [allChooseArray addObject:firstArray];
    //    [firstArray release];
    
    int count = 0;
    for(int i = 0; i < n-1; i++)
    {
        if ([[array objectAtIndex:i] intValue] == 1 && [[array objectAtIndex:(i + 1)] intValue] == 0)
        {
            [array replaceObjectAtIndex:i withObject:@"0"];
            [array replaceObjectAtIndex:(i + 1) withObject:@"1"];
            
            // i = 2, (1,1,0,1,0)
            
            for (int k = 0; k < i; k++)
            {
                if ([[array objectAtIndex:k] intValue] == 1)
                {
                    count ++;
                }
            }
            if (count > 0)
            {
                for (int k = 0; k < i; k++)
                {
                    if (k < count)
                    {
                        // k = 1, (1,1,0,1,0)
                        [array replaceObjectAtIndex:k withObject:@"1"];
                    }
                    else
                    {
                        [array replaceObjectAtIndex:k withObject:@"0"];
                    }
                }
            }
            
            NSMutableArray *middleArray = [[NSMutableArray alloc] init];
            
            for (int k = 0; k < n; k++)
            {
                if ([[array objectAtIndex:k] intValue] == 1)
                {
                    //                    [middleArray addObject:[NSString stringWithFormat:@"%d",k + 1]];
                    [middleArray addObject:[retArray objectAtIndex:k]];
                }
            }
            
            [allChooseArray addObject:middleArray];
            //            [middleArray release];
            
            i     = -1;
            count = 0;
        }
    }
    return allChooseArray;
}

相关文章

  • 排列组合公式及排列组合算法

    排列组合公式 排列组合公式/排列组合计算公式 公式P是指排列,从N个元素取M个进行排列。 公式C是指组合,从N个元...

  • 排列组合的基本计算公式、排列组合的威力

    欢迎关注公众号:沈阳奥数 今天讲一下如何理解和记忆排列组合的基本计算公式,然后再解释一下为什么推荐用排列组合。 排...

  • 排列组合计算公式

  • 关于24点游戏的一个简单算法-iOS

    先利用穷举法,例出所有计算公式。 再利用循环例举出4个数字的所有排列组合,调用calculate方法就能得到24点...

  • 常见排列组合问题的计算公式

    在进行排列组合计算以及概率计算时我们经常会遇到一些具有相同性质的问题。假设问题的样本空间Ω中一共有k种类型的元素α...

  • 排列组合

    排列组合计算公式如下: 1、从n个不同元素中取出m(m≤n)个元素的所有排列的个数,叫做从n个不同元素中取出m个元...

  • 纺织基础知识大全

    01 纺织常用计算公式分为 定长制计算公式和定重制计算公式二种。 1、定长制计算公式: (1)、旦尼尔(D):D=...

  • 计算cell block的面积

    Density 计算公式: Density 又称Utilization, 计算公式如下。 leaf cell 面积...

  • 排列组合-js

    排列组合 数学相关知识:5分钟彻底了解排列组合 参考:程序员必备算法——排列组合 排列有序,组合无序 3选2 :排...

  • 排列组合

    python 实现 排列组合

网友评论

      本文标题:排列组合计算公式

      本文链接:https://www.haomeiwen.com/subject/haivtqtx.html