oc 中組合排序演算法,oc組合排序演算法

來源:互聯網
上載者:User

oc 中組合排序演算法,oc組合排序演算法

- (NSMutableArray *)zuHeSuanFa:(NSMutableArray *)array chooseCount:(int)m{    int n = (int)[array count];        if (m > n)    {        return nil;    }    //    NSLog(@"從1到%d中取%d個數的組合。。。",n,m);        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]];//            NSLog(@"%d ",i+1);        }    }        [allChooseArray addObject:firstArray];    //    [firstArray release];//    NSLog(@"============");        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)                {//                    NSLog(@"%d ",k+1);                    //                    [middleArray addObject:[NSString stringWithFormat:@"%d",k + 1]];                    [middleArray addObject:[retArray objectAtIndex:k]];                }            }                        [allChooseArray addObject:middleArray];            //            [middleArray release];            //            NSLog(@"============");                        i = -1;            count = 0;        }    }        return allChooseArray;}

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.