//组合算法 从M个数中取出N个数,无顺序

来源:互联网 发布:单片机的串口通讯协议 编辑:程序博客网 时间:2024/05/21 21:46



  [selfmyCombineAlgorithm:MutableArray num:5];

//组合算法 M个数中取出N个数,无顺序

-(void)myCombineAlgorithm:(NSMutableArray*)src num:(int)getnum

{

   if (src.count ==0)

    {

       return;

    }

   else if(src.count < getnum)

    {

       return;

    }

//   int m = src.count;

  int n = getnum;

    

    /*  初始化  */

    objLineIndex =0;

    objarray = [[NSMutableArrayalloc]init];

    NSMutableArray* tmp = [[NSMutableArrayalloc]init];

    [selfmyCombine:src srcIndex:0i:0 n:n tmp:tmp];

    

//     int i = objarray.count;

}

/**

 * <p> 递归算法,把结果写到obj二维数组对象 </p>

 * @param src

 * @param srcIndex

 * @param i

 * @param n

 * @param tmp

 * @since royoan 2014-6-15 上午11:22:24

 */

-(void)myCombine:(NSMutableArray*)src srcIndex:(int)srcIndex i:(int)i n:(int)n tmp:(NSMutableArray*)tmp

{

   NSArray *betslist = [self.transactionallBets];

   int j;

   for (j = srcIndex; j < src.count - (n -1); j++ ) {

        tmp[i] = src[j];

       if (n == 1) {

//            objarray[objLineIndex] = tmp;//tmp为每一次产生的数组

////////////////////////////////////////////////随机组合的五个号码,同当前选择的号码比较

           int maxmul = 0;

           for(int i=0;i<betslist.count;i++)

            {

                

               NSString *str = [[betslist[i] valueForKey:@"betNumbersDesc"]valueForKey:@"mutableString"];

                NSMutableArray * array = [str componentsSeparatedByString:@","];

               int count =0;

               if(array.count<tmp.count)

                {

                   for(int i=0;i<array.count;i++)

                    {

                       for(int j=0;j<tmp.count;j++)

                        {

                           if([array[i] isEqualToString:tmp[j]])

                            {

                                count++;

                            }

                            

                        }

                    }

                   if(count == array.count)

                    {

                        maxmul++;

                    }

                }

               else

                {

                   for(int i=0;i<tmp.count;i++)

                    {

                       for(int j=0;j<array.count;j++)

                        {

                           if([array[j] isEqualToString:tmp[i]])

                            {

                                count++;

                            }

                            

                        }

                    }

                   if(count == tmp.count)

                    {

                        maxmul++;

                    }


                }

            }

           if(maxmul > Maxmulcount)

            {

               Maxmulcount = maxmul;

            }

////////////////////////////////////////////////随机组合的五个号码,同当前选择的号码比较

//            objLineIndex ++;

        }else {

            n--;

            i++;

            [selfmyCombine:src srcIndex:j+1i:i n:n tmp:tmp];

            n++;

            i--;

        }

    }

    

}


0 0
原创粉丝点击